diff options
33 files changed, 119 insertions, 362 deletions
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc index 2c393741..913923c 100644 --- a/cc/resources/resource_provider.cc +++ b/cc/resources/resource_provider.cc @@ -201,7 +201,6 @@ ResourceProvider::Resource::Resource(GLuint texture_id, Origin origin, GLenum target, GLenum filter, - GLenum texture_pool, TextureHint hint, ResourceFormat format) : child_id(0), @@ -229,13 +228,11 @@ ResourceProvider::Resource::Resource(GLuint texture_id, filter(filter), image_id(0), bound_image_id(0), - texture_pool(texture_pool), hint(hint), type(RESOURCE_TYPE_GL_TEXTURE), format(format), shared_bitmap(NULL), gpu_memory_buffer(NULL) { - DCHECK_EQ(origin == INTERNAL, !!texture_pool); } ResourceProvider::Resource::Resource(uint8_t* pixels, @@ -267,7 +264,6 @@ ResourceProvider::Resource::Resource(uint8_t* pixels, filter(filter), image_id(0), bound_image_id(0), - texture_pool(0), hint(TEXTURE_HINT_IMMUTABLE), type(RESOURCE_TYPE_BITMAP), format(RGBA_8888), @@ -306,7 +302,6 @@ ResourceProvider::Resource::Resource(const SharedBitmapId& bitmap_id, filter(filter), image_id(0), bound_image_id(0), - texture_pool(0), hint(TEXTURE_HINT_IMMUTABLE), type(RESOURCE_TYPE_BITMAP), format(RGBA_8888), @@ -391,7 +386,6 @@ ResourceId ResourceProvider::CreateResource(const gfx::Size& size, case RESOURCE_TYPE_GL_TEXTURE: return CreateGLTexture(size, GL_TEXTURE_2D, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, hint, format); case RESOURCE_TYPE_BITMAP: @@ -412,7 +406,6 @@ ResourceId ResourceProvider::CreateManagedResource(const gfx::Size& size, case RESOURCE_TYPE_GL_TEXTURE: return CreateGLTexture(size, target, - GL_TEXTURE_POOL_MANAGED_CHROMIUM, hint, format); case RESOURCE_TYPE_BITMAP: @@ -426,7 +419,6 @@ ResourceId ResourceProvider::CreateManagedResource(const gfx::Size& size, ResourceId ResourceProvider::CreateGLTexture(const gfx::Size& size, GLenum target, - GLenum texture_pool, TextureHint hint, ResourceFormat format) { DCHECK_LE(size.width(), max_texture_size_); @@ -434,9 +426,9 @@ ResourceId ResourceProvider::CreateGLTexture(const gfx::Size& size, DCHECK(thread_checker_.CalledOnValidThread()); ResourceId id = next_id_++; - Resource* resource = - InsertResource(id, Resource(0, size, Resource::INTERNAL, target, - GL_LINEAR, texture_pool, hint, format)); + Resource* resource = InsertResource( + id, + Resource(0, size, Resource::INTERNAL, target, GL_LINEAR, hint, format)); resource->allocated = false; return id; } @@ -465,8 +457,7 @@ ResourceId ResourceProvider::CreateResourceFromIOSurface( ResourceId id = next_id_++; Resource* resource = InsertResource( id, Resource(0, gfx::Size(), Resource::INTERNAL, GL_TEXTURE_RECTANGLE_ARB, - GL_LINEAR, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, - TEXTURE_HINT_IMMUTABLE, RGBA_8888)); + GL_LINEAR, TEXTURE_HINT_IMMUTABLE, RGBA_8888)); LazyCreate(resource); GLES2Interface* gl = ContextGL(); DCHECK(gl); @@ -489,7 +480,7 @@ ResourceId ResourceProvider::CreateResourceFromTextureMailbox( if (mailbox.IsTexture()) { resource = InsertResource( id, Resource(0, gfx::Size(), Resource::EXTERNAL, mailbox.target(), - mailbox.nearest_neighbor() ? GL_NEAREST : GL_LINEAR, 0, + mailbox.nearest_neighbor() ? GL_NEAREST : GL_LINEAR, TEXTURE_HINT_IMMUTABLE, RGBA_8888)); } else { DCHECK(mailbox.IsSharedMemory()); @@ -1202,7 +1193,7 @@ void ResourceProvider::ReceiveFromChild( } else { resource = InsertResource( local_id, Resource(0, it->size, Resource::DELEGATED, - it->mailbox_holder.texture_target, it->filter, 0, + it->mailbox_holder.texture_target, it->filter, TEXTURE_HINT_IMMUTABLE, it->format)); resource->mailbox = TextureMailbox(it->mailbox_holder.mailbox, it->mailbox_holder.texture_target, @@ -1487,7 +1478,6 @@ void ResourceProvider::LazyCreate(Resource* resource) { if (resource->gl_id) return; - DCHECK(resource->texture_pool); DCHECK(resource->origin == Resource::INTERNAL); DCHECK(!resource->mailbox.IsValid()); resource->gl_id = texture_id_allocator_->NextId(); @@ -1503,8 +1493,6 @@ void ResourceProvider::LazyCreate(Resource* resource) { resource->original_filter); gl->TexParameteri(resource->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); gl->TexParameteri(resource->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - gl->TexParameteri(resource->target, GL_TEXTURE_POOL_CHROMIUM, - resource->texture_pool); if (use_texture_usage_hint_ && (resource->hint & TEXTURE_HINT_FRAMEBUFFER)) { gl->TexParameteri(resource->target, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE); diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h index e751ad6..a8d579d 100644 --- a/cc/resources/resource_provider.h +++ b/cc/resources/resource_provider.h @@ -122,8 +122,8 @@ class CC_EXPORT ResourceProvider TextureHint hint, ResourceFormat format); - // Creates a resource which is tagged as being managed for GPU memory - // accounting purposes. + // Creates a resource for a particular texture target (the distinction between + // texture targets has no effect in software mode). ResourceId CreateManagedResource(const gfx::Size& size, GLenum target, TextureHint hint, @@ -132,7 +132,6 @@ class CC_EXPORT ResourceProvider // You can also explicitly create a specific resource type. ResourceId CreateGLTexture(const gfx::Size& size, GLenum target, - GLenum texture_pool, TextureHint hint, ResourceFormat format); @@ -456,7 +455,6 @@ class CC_EXPORT ResourceProvider Origin origin, GLenum target, GLenum filter, - GLenum texture_pool, TextureHint hint, ResourceFormat format); Resource(uint8_t* pixels, @@ -500,7 +498,6 @@ class CC_EXPORT ResourceProvider GLenum filter; unsigned image_id; unsigned bound_image_id; - GLenum texture_pool; TextureHint hint; ResourceType type; ResourceFormat format; diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc index 5da53e6..dc2b76d 100644 --- a/cc/resources/resource_provider_unittest.cc +++ b/cc/resources/resource_provider_unittest.cc @@ -1903,10 +1903,6 @@ class ResourceProviderTestTextureFilters : public ResourceProviderTest { EXPECT_CALL( *child_context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_CALL(*child_context, - texParameteri(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); child_resource_provider->AllocateForTesting(id); Mock::VerifyAndClearExpectations(child_context); @@ -2531,10 +2527,6 @@ TEST_P(ResourceProviderTest, ScopedSampler) { EXPECT_CALL( *context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_CALL(*context, - texParameteri(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); resource_provider->AllocateForTesting(id); Mock::VerifyAndClearExpectations(context); @@ -2612,10 +2604,6 @@ TEST_P(ResourceProviderTest, ManagedResource) { EXPECT_CALL( *context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_CALL(*context, - texParameteri(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_MANAGED_CHROMIUM)); resource_provider->CreateForTesting(id); EXPECT_NE(0u, id); @@ -2643,13 +2631,11 @@ TEST_P(ResourceProviderTest, TextureWrapMode) { gfx::Size size(1, 1); ResourceFormat format = RGBA_8888; - GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; for (int texture_id = 1; texture_id <= 2; ++texture_id) { // Check that the texture gets created with the right sampler settings. ResourceId id = resource_provider->CreateGLTexture( - size, GL_TEXTURE_2D, texture_pool, - ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); + size, GL_TEXTURE_2D, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); EXPECT_CALL(*context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); @@ -2659,10 +2645,6 @@ TEST_P(ResourceProviderTest, TextureWrapMode) { GL_CLAMP_TO_EDGE)); EXPECT_CALL(*context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_CALL(*context, - texParameteri(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); resource_provider->CreateForTesting(id); EXPECT_NE(0u, id); @@ -2693,7 +2675,6 @@ TEST_P(ResourceProviderTest, TextureHint) { gfx::Size size(1, 1); ResourceFormat format = RGBA_8888; - GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; const ResourceProvider::TextureHint hints[4] = { ResourceProvider::TEXTURE_HINT_DEFAULT, @@ -2704,7 +2685,7 @@ TEST_P(ResourceProviderTest, TextureHint) { for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { // Check that the texture gets created with the right sampler settings. ResourceId id = resource_provider->CreateGLTexture( - size, GL_TEXTURE_2D, texture_pool, hints[texture_id - 1], format); + size, GL_TEXTURE_2D, hints[texture_id - 1], format); EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); EXPECT_CALL(*context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); @@ -2716,10 +2697,6 @@ TEST_P(ResourceProviderTest, TextureHint) { EXPECT_CALL( *context, texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_CALL(*context, - texParameteri(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); // Check only TEXTURE_HINT_FRAMEBUFFER set GL_TEXTURE_USAGE_ANGLE. bool is_framebuffer_hint = hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_FRAMEBUFFER; diff --git a/cc/test/test_texture.cc b/cc/test/test_texture.cc index 7ba1b97..b9fff8d 100644 --- a/cc/test/test_texture.cc +++ b/cc/test/test_texture.cc @@ -22,7 +22,6 @@ TestTexture::TestTexture() : format(RGBA_8888) { params[GL_TEXTURE_MIN_FILTER] = GL_NEAREST_MIPMAP_LINEAR; params[GL_TEXTURE_WRAP_S] = GL_CLAMP_TO_EDGE; params[GL_TEXTURE_WRAP_T] = GL_CLAMP_TO_EDGE; - params[GL_TEXTURE_POOL_CHROMIUM] = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; params[GL_TEXTURE_USAGE_ANGLE] = GL_NONE; } diff --git a/cc/test/test_web_graphics_context_3d_unittest.cc b/cc/test/test_web_graphics_context_3d_unittest.cc index 48f807d..45766ad 100644 --- a/cc/test/test_web_graphics_context_3d_unittest.cc +++ b/cc/test/test_web_graphics_context_3d_unittest.cc @@ -28,8 +28,6 @@ static void expect_default_parameter_values(TestWebGraphicsContext3D* context) { check_parameter_value(context, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); EXPECT_TRUE( check_parameter_value(context, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); - EXPECT_TRUE(check_parameter_value( - context, GL_TEXTURE_POOL_CHROMIUM, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); EXPECT_TRUE(check_parameter_value(context, GL_TEXTURE_USAGE_ANGLE, GL_NONE)); } diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index 95b7171..d3c67d7 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc @@ -2296,10 +2296,6 @@ class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { .Times(1); EXPECT_CALL(*mock_context_, texParameteri(GL_TEXTURE_RECTANGLE_ARB, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)).Times(1); - EXPECT_CALL(*mock_context_, - texParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)).Times(1); EXPECT_CALL(*mock_context_, diff --git a/components/mus/gles2/gpu_memory_tracker.cc b/components/mus/gles2/gpu_memory_tracker.cc index 7936f8b..0d9f12b 100644 --- a/components/mus/gles2/gpu_memory_tracker.cc +++ b/components/mus/gles2/gpu_memory_tracker.cc @@ -10,8 +10,7 @@ GpuMemoryTracker::GpuMemoryTracker() {} void GpuMemoryTracker::TrackMemoryAllocatedChange( size_t old_size, - size_t new_size, - gpu::gles2::MemoryTracker::Pool pool) {} + size_t new_size) {} bool GpuMemoryTracker::EnsureGPUMemoryAvailable(size_t size_needed) { return true; diff --git a/components/mus/gles2/gpu_memory_tracker.h b/components/mus/gles2/gpu_memory_tracker.h index 8eb1355..6a05070 100644 --- a/components/mus/gles2/gpu_memory_tracker.h +++ b/components/mus/gles2/gpu_memory_tracker.h @@ -18,8 +18,7 @@ class GpuMemoryTracker : public gpu::gles2::MemoryTracker { // gpu::MemoryTracker implementation: void TrackMemoryAllocatedChange( size_t old_size, - size_t new_size, - gpu::gles2::MemoryTracker::Pool pool) override; + size_t new_size) override; bool EnsureGPUMemoryAvailable(size_t size_needed) override; uint64_t ClientTracingId() const override; int ClientId() const override; diff --git a/content/common/gpu/gpu_command_buffer_stub.cc b/content/common/gpu/gpu_command_buffer_stub.cc index 2115049..c1b5904 100644 --- a/content/common/gpu/gpu_command_buffer_stub.cc +++ b/content/common/gpu/gpu_command_buffer_stub.cc @@ -76,11 +76,9 @@ class GpuCommandBufferMemoryTracker : public gpu::gles2::MemoryTracker { share_group_tracing_guid_(share_group_tracing_guid) {} void TrackMemoryAllocatedChange( - size_t old_size, - size_t new_size, - gpu::gles2::MemoryTracker::Pool pool) override { + size_t old_size, size_t new_size) override { tracking_group_->TrackMemoryAllocatedChange( - old_size, new_size, pool); + old_size, new_size); } bool EnsureGPUMemoryAvailable(size_t size_needed) override { diff --git a/content/common/gpu/gpu_memory_manager.cc b/content/common/gpu/gpu_memory_manager.cc index 755fe2a..5f21fec 100644 --- a/content/common/gpu/gpu_memory_manager.cc +++ b/content/common/gpu/gpu_memory_manager.cc @@ -27,7 +27,7 @@ namespace { const int kDelayedScheduleManageTimeoutMs = 67; -const uint64 kBytesAllocatedUnmanagedStep = 16 * 1024 * 1024; +const uint64 kBytesAllocatedStep = 16 * 1024 * 1024; void TrackValueChanged(uint64 old_size, uint64 new_size, uint64* total_size) { DCHECK(new_size > old_size || *total_size >= (old_size - new_size)); @@ -45,8 +45,7 @@ GpuMemoryManager::GpuMemoryManager( max_surfaces_with_frontbuffer_soft_limit_( max_surfaces_with_frontbuffer_soft_limit), client_hard_limit_bytes_(0), - bytes_allocated_managed_current_(0), - bytes_allocated_unmanaged_current_(0), + bytes_allocated_current_(0), bytes_allocated_historical_max_(0) { } @@ -55,8 +54,7 @@ GpuMemoryManager::~GpuMemoryManager() { DCHECK(clients_visible_mru_.empty()); DCHECK(clients_nonvisible_mru_.empty()); DCHECK(clients_nonsurface_.empty()); - DCHECK(!bytes_allocated_managed_current_); - DCHECK(!bytes_allocated_unmanaged_current_); + DCHECK(!bytes_allocated_current_); } void GpuMemoryManager::ScheduleManage( @@ -85,25 +83,12 @@ void GpuMemoryManager::ScheduleManage( void GpuMemoryManager::TrackMemoryAllocatedChange( GpuMemoryTrackingGroup* tracking_group, uint64 old_size, - uint64 new_size, - gpu::gles2::MemoryTracker::Pool tracking_pool) { + uint64 new_size) { TrackValueChanged(old_size, new_size, &tracking_group->size_); - switch (tracking_pool) { - case gpu::gles2::MemoryTracker::kManaged: - TrackValueChanged(old_size, new_size, &bytes_allocated_managed_current_); - break; - case gpu::gles2::MemoryTracker::kUnmanaged: - TrackValueChanged(old_size, - new_size, - &bytes_allocated_unmanaged_current_); - break; - default: - NOTREACHED(); - break; - } + TrackValueChanged(old_size, new_size, &bytes_allocated_current_); if (GetCurrentUsage() > bytes_allocated_historical_max_ + - kBytesAllocatedUnmanagedStep) { + kBytesAllocatedStep) { bytes_allocated_historical_max_ = GetCurrentUsage(); // If we're blowing into new memory usage territory, spam the browser // process with the most up-to-date information about our memory usage. diff --git a/content/common/gpu/gpu_memory_manager.h b/content/common/gpu/gpu_memory_manager.h index b92c953..cdfd30d 100644 --- a/content/common/gpu/gpu_memory_manager.h +++ b/content/common/gpu/gpu_memory_manager.h @@ -118,16 +118,14 @@ class CONTENT_EXPORT GpuMemoryManager : // Get the current number of bytes allocated. uint64 GetCurrentUsage() const { - return bytes_allocated_managed_current_ + - bytes_allocated_unmanaged_current_; + return bytes_allocated_current_; } // GpuMemoryTrackingGroup interface void TrackMemoryAllocatedChange( GpuMemoryTrackingGroup* tracking_group, uint64 old_size, - uint64 new_size, - gpu::gles2::MemoryTracker::Pool tracking_pool); + uint64 new_size); void OnDestroyTrackingGroup(GpuMemoryTrackingGroup* tracking_group); bool EnsureGPUMemoryAvailable(uint64 size_needed); @@ -168,8 +166,7 @@ class CONTENT_EXPORT GpuMemoryManager : uint64 client_hard_limit_bytes_; // The current total memory usage, and historical maximum memory usage - uint64 bytes_allocated_managed_current_; - uint64 bytes_allocated_unmanaged_current_; + uint64 bytes_allocated_current_; uint64 bytes_allocated_historical_max_; DISALLOW_COPY_AND_ASSIGN(GpuMemoryManager); diff --git a/content/common/gpu/gpu_memory_manager_unittest.cc b/content/common/gpu/gpu_memory_manager_unittest.cc index c2fb527..3b6653b 100644 --- a/content/common/gpu/gpu_memory_manager_unittest.cc +++ b/content/common/gpu/gpu_memory_manager_unittest.cc @@ -16,8 +16,7 @@ class FakeMemoryTracker : public gpu::gles2::MemoryTracker { public: void TrackMemoryAllocatedChange( size_t /* old_size */, - size_t /* new_size */, - gpu::gles2::MemoryTracker::Pool /* pool */) override {} + size_t /* new_size */) override {} bool EnsureGPUMemoryAvailable(size_t /* size_needed */) override { return true; } diff --git a/content/common/gpu/gpu_memory_tracking.cc b/content/common/gpu/gpu_memory_tracking.cc index e2d1fc7..9ddeb8b 100644 --- a/content/common/gpu/gpu_memory_tracking.cc +++ b/content/common/gpu/gpu_memory_tracking.cc @@ -25,10 +25,9 @@ GpuMemoryTrackingGroup::~GpuMemoryTrackingGroup() { void GpuMemoryTrackingGroup::TrackMemoryAllocatedChange( uint64 old_size, - uint64 new_size, - gpu::gles2::MemoryTracker::Pool tracking_pool) { + uint64 new_size) { memory_manager_->TrackMemoryAllocatedChange( - this, old_size, new_size, tracking_pool); + this, old_size, new_size); } bool GpuMemoryTrackingGroup::EnsureGPUMemoryAvailable(uint64 size_needed) { diff --git a/content/common/gpu/gpu_memory_tracking.h b/content/common/gpu/gpu_memory_tracking.h index 97c0743..bc06f9b 100644 --- a/content/common/gpu/gpu_memory_tracking.h +++ b/content/common/gpu/gpu_memory_tracking.h @@ -21,8 +21,7 @@ class CONTENT_EXPORT GpuMemoryTrackingGroup { ~GpuMemoryTrackingGroup(); void TrackMemoryAllocatedChange( uint64 old_size, - uint64 new_size, - gpu::gles2::MemoryTracker::Pool tracking_pool); + uint64 new_size); bool EnsureGPUMemoryAvailable(uint64 size_needed); base::ProcessId GetPid() const { return pid_; diff --git a/gpu/GLES2/gl2extchromium.h b/gpu/GLES2/gl2extchromium.h index 51928a3..a79b3e7 100644 --- a/gpu/GLES2/gl2extchromium.h +++ b/gpu/GLES2/gl2extchromium.h @@ -27,23 +27,6 @@ typedef void (GL_APIENTRYP PFNGLTEXIMAGEIOSURFACE2DCHROMIUMPROC) ( GLuint plane); #endif /* GL_CHROMIUM_iosurface */ -/* GL_CHROMIUM_gpu_memory_manager */ -#ifndef GL_CHROMIUM_gpu_memory_manager -#define GL_CHROMIUM_gpu_memory_manager 1 - -#ifndef GL_TEXTURE_POOL_UNMANAGED_CHROMIUM -#define GL_TEXTURE_POOL_UNMANAGED_CHROMIUM 0x6002 -#endif - -#ifndef GL_TEXTURE_POOL_CHROMIUM -#define GL_TEXTURE_POOL_CHROMIUM 0x6000 -#endif - -#ifndef GL_TEXTURE_POOL_MANAGED_CHROMIUM -#define GL_TEXTURE_POOL_MANAGED_CHROMIUM 0x6001 -#endif -#endif /* GL_CHROMIUM_gpu_memory_manager */ - /* GL_CHROMIUM_texture_mailbox */ #ifndef GL_CHROMIUM_texture_mailbox #define GL_CHROMIUM_texture_mailbox 1 diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py index e726958..5affdcb 100755 --- a/gpu/command_buffer/build_gles2_cmd_buffer.py +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py @@ -1346,7 +1346,6 @@ _NAMED_TYPE_INFO = { 'valid': [ 'GL_TEXTURE_MAG_FILTER', 'GL_TEXTURE_MIN_FILTER', - 'GL_TEXTURE_POOL_CHROMIUM', 'GL_TEXTURE_WRAP_S', 'GL_TEXTURE_WRAP_T', ], @@ -1365,13 +1364,6 @@ _NAMED_TYPE_INFO = { 'GL_GENERATE_MIPMAP', ], }, - 'TexturePool': { - 'type': 'GLenum', - 'valid': [ - 'GL_TEXTURE_POOL_MANAGED_CHROMIUM', - 'GL_TEXTURE_POOL_UNMANAGED_CHROMIUM', - ], - }, 'TextureWrapMode': { 'type': 'GLenum', 'valid': [ diff --git a/gpu/command_buffer/common/gles2_cmd_utils_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_autogen.h index e23d2c4..fb1bd4a 100644 --- a/gpu/command_buffer/common/gles2_cmd_utils_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_utils_autogen.h @@ -85,7 +85,6 @@ static std::string GetStringTextureInternalFormatStorage(uint32_t value); static std::string GetStringTextureMagFilterMode(uint32_t value); static std::string GetStringTextureMinFilterMode(uint32_t value); static std::string GetStringTextureParameter(uint32_t value); -static std::string GetStringTexturePool(uint32_t value); static std::string GetStringTextureTarget(uint32_t value); static std::string GetStringTextureUsage(uint32_t value); static std::string GetStringTextureWrapMode(uint32_t value); diff --git a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h index af2b10e..82c83fa 100644 --- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h +++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h @@ -49,9 +49,6 @@ static const GLES2Util::EnumToString enum_to_string_table[] = { 0x0BC2, "GL_ALPHA_TEST_REF_QCOM", }, { - 0x78EF, "GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM", - }, - { 0x884D, "GL_TEXTURE_COMPARE_FUNC_EXT", }, { @@ -1159,9 +1156,6 @@ static const GLES2Util::EnumToString enum_to_string_table[] = { 0x8A44, "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", }, { - 0x6000, "GL_TEXTURE_POOL_CHROMIUM", - }, - { 0x0B74, "GL_DEPTH_FUNC", }, { @@ -2266,9 +2260,6 @@ static const GLES2Util::EnumToString enum_to_string_table[] = { 0x84DC, "GL_TEXTURE28", }, { - 0x6002, "GL_TEXTURE_POOL_UNMANAGED_CHROMIUM", - }, - { 0x84DA, "GL_TEXTURE26", }, { @@ -2845,7 +2836,7 @@ static const GLES2Util::EnumToString enum_to_string_table[] = { 0x78EE, "GL_PIXEL_PACK_TRANSFER_BUFFER_BINDING_CHROMIUM", }, { - 0x6001, "GL_TEXTURE_POOL_MANAGED_CHROMIUM", + 0x78EF, "GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM", }, { 0x0B45, "GL_CULL_FACE_MODE", @@ -4641,7 +4632,6 @@ std::string GLES2Util::GetStringTextureParameter(uint32_t value) { static const EnumToString string_table[] = { {GL_TEXTURE_MAG_FILTER, "GL_TEXTURE_MAG_FILTER"}, {GL_TEXTURE_MIN_FILTER, "GL_TEXTURE_MIN_FILTER"}, - {GL_TEXTURE_POOL_CHROMIUM, "GL_TEXTURE_POOL_CHROMIUM"}, {GL_TEXTURE_WRAP_S, "GL_TEXTURE_WRAP_S"}, {GL_TEXTURE_WRAP_T, "GL_TEXTURE_WRAP_T"}, {GL_TEXTURE_BASE_LEVEL, "GL_TEXTURE_BASE_LEVEL"}, @@ -4658,16 +4648,6 @@ std::string GLES2Util::GetStringTextureParameter(uint32_t value) { arraysize(string_table), value); } -std::string GLES2Util::GetStringTexturePool(uint32_t value) { - static const EnumToString string_table[] = { - {GL_TEXTURE_POOL_MANAGED_CHROMIUM, "GL_TEXTURE_POOL_MANAGED_CHROMIUM"}, - {GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, - "GL_TEXTURE_POOL_UNMANAGED_CHROMIUM"}, - }; - return GLES2Util::GetQualifiedEnumString(string_table, - arraysize(string_table), value); -} - std::string GLES2Util::GetStringTextureTarget(uint32_t value) { static const EnumToString string_table[] = { {GL_TEXTURE_2D, "GL_TEXTURE_2D"}, diff --git a/gpu/command_buffer/service/buffer_manager.cc b/gpu/command_buffer/service/buffer_manager.cc index 6e3c167..20806e2 100644 --- a/gpu/command_buffer/service/buffer_manager.cc +++ b/gpu/command_buffer/service/buffer_manager.cc @@ -24,7 +24,7 @@ namespace gles2 { BufferManager::BufferManager(MemoryTracker* memory_tracker, FeatureInfo* feature_info) : memory_type_tracker_( - new MemoryTypeTracker(memory_tracker, MemoryTracker::kManaged)), + new MemoryTypeTracker(memory_tracker)), memory_tracker_(memory_tracker), feature_info_(feature_info), allow_buffers_on_multiple_targets_(false), diff --git a/gpu/command_buffer/service/buffer_manager_unittest.cc b/gpu/command_buffer/service/buffer_manager_unittest.cc index 91003a0..faf7828 100644 --- a/gpu/command_buffer/service/buffer_manager_unittest.cc +++ b/gpu/command_buffer/service/buffer_manager_unittest.cc @@ -102,9 +102,9 @@ class BufferManagerClientSideArraysTest : public BufferManagerTestBase { scoped_refptr<FeatureInfo> feature_info_; }; -#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ +#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size) \ EXPECT_CALL(*mock_memory_tracker_.get(), \ - TrackMemoryAllocatedChange(old_size, new_size, pool)) \ + TrackMemoryAllocatedChange(old_size, new_size)) \ .Times(1).RetiresOnSaturation() TEST_F(BufferManagerTest, Basic) { @@ -154,22 +154,22 @@ TEST_F(BufferManagerMemoryTrackerTest, Basic) { const GLsizeiptr kBuffer1Size1 = 123; const GLsizeiptr kBuffer1Size2 = 456; // Check we can create buffer. - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); manager_->CreateBuffer(kClientBuffer1Id, kServiceBuffer1Id); // Check buffer got created. Buffer* buffer1 = manager_->GetBuffer(kClientBuffer1Id); ASSERT_TRUE(buffer1 != NULL); manager_->SetTarget(buffer1, kTarget); // Check we and set its size. - EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size1, MemoryTracker::kManaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size1); DoBufferData( buffer1, kTarget, kBuffer1Size1, GL_DYNAMIC_DRAW, NULL, GL_NO_ERROR); - EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size1, 0, MemoryTracker::kManaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size2, MemoryTracker::kManaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size1, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, kBuffer1Size2); DoBufferData( buffer1, kTarget, kBuffer1Size2, GL_DYNAMIC_DRAW, NULL, GL_NO_ERROR); // On delete it will get freed. - EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size2, 0, MemoryTracker::kManaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(kBuffer1Size2, 0); } TEST_F(BufferManagerTest, Destroy) { diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index a555557..626e362 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -2534,7 +2534,7 @@ ScopedResolvedFrameBufferBinder::~ScopedResolvedFrameBufferBinder() { BackTexture::BackTexture( MemoryTracker* memory_tracker, ContextState* state) - : memory_tracker_(memory_tracker, MemoryTracker::kUnmanaged), + : memory_tracker_(memory_tracker), state_(state), bytes_allocated_(0), id_(0) { @@ -2647,7 +2647,7 @@ BackRenderbuffer::BackRenderbuffer( MemoryTracker* memory_tracker, ContextState* state) : renderbuffer_manager_(renderbuffer_manager), - memory_tracker_(memory_tracker, MemoryTracker::kUnmanaged), + memory_tracker_(memory_tracker), state_(state), bytes_allocated_(0), id_(0) { diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc index a66af3a..3f6d20d 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc @@ -1111,65 +1111,27 @@ TEST_P(GLES2DecoderTest, IsEnabledReturnsCachedValue) { } } -TEST_P(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { - InitState init; - init.extensions = "GL_ARB_texture_rectangle"; - init.bind_generates_resource = true; - InitDecoder(init); - - Texture* texture = GetTexture(client_texture_id_)->texture(); - EXPECT_TRUE(texture != NULL); - EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_UNMANAGED_CHROMIUM); - - DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); - - TexParameteri cmd; - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_UNMANAGED_CHROMIUM); - EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); - EXPECT_EQ(GL_NO_ERROR, GetGLError()); - - cmd.Init(GL_TEXTURE_2D, - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_MANAGED_CHROMIUM); - EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); - EXPECT_EQ(GL_NO_ERROR, GetGLError()); - - EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_MANAGED_CHROMIUM); - - cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_POOL_CHROMIUM, GL_NONE); - EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); - EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); -} - namespace { class SizeOnlyMemoryTracker : public MemoryTracker { public: SizeOnlyMemoryTracker() { - // These are the default textures. 1 for TEXTURE_2D and 6 faces for - // TEXTURE_CUBE_MAP. - const size_t kInitialUnmanagedPoolSize = 7 * 4; - const size_t kInitialManagedPoolSize = 0; - pool_infos_[MemoryTracker::kUnmanaged].initial_size = - kInitialUnmanagedPoolSize; - pool_infos_[MemoryTracker::kManaged].initial_size = kInitialManagedPoolSize; + // Account for the 7 default textures. 1 for TEXTURE_2D and 6 faces for + // TEXTURE_CUBE_MAP. Each is 1x1, with 4 bytes per channel. + pool_info_.initial_size = 28; + pool_info_.size = 0; } // Ensure a certain amount of GPU memory is free. Returns true on success. MOCK_METHOD1(EnsureGPUMemoryAvailable, bool(size_t size_needed)); virtual void TrackMemoryAllocatedChange(size_t old_size, - size_t new_size, - Pool pool) { - PoolInfo& info = pool_infos_[pool]; - info.size += new_size - old_size; + size_t new_size) { + pool_info_.size += new_size - old_size; } - size_t GetPoolSize(Pool pool) { - const PoolInfo& info = pool_infos_[pool]; - return info.size - info.initial_size; + size_t GetPoolSize() { + return pool_info_.size - pool_info_.initial_size; } uint64_t ClientTracingId() const override { return 0; } @@ -1183,7 +1145,7 @@ class SizeOnlyMemoryTracker : public MemoryTracker { size_t initial_size; size_t size; }; - std::map<Pool, PoolInfo> pool_infos_; + PoolInfo pool_info_; }; } // anonymous namespace. @@ -1196,8 +1158,8 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) { init.bind_generates_resource = true; InitDecoder(init); // Expect that initial size - size is 0. - EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); - EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); + EXPECT_EQ(0u, memory_tracker->GetPoolSize()); + EXPECT_EQ(0u, memory_tracker->GetPoolSize()); } TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { @@ -1221,7 +1183,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64)) .WillOnce(Return(true)) .RetiresOnSaturation(); @@ -1235,7 +1197,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); - EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(64u, memory_tracker->GetPoolSize()); EXPECT_EQ(GL_NO_ERROR, GetGLError()); // Check we get out of memory and no call to glTexImage2D if Ensure fails. EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64)) @@ -1253,7 +1215,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { kSharedMemoryOffset); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); - EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(64u, memory_tracker->GetPoolSize()); } TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { @@ -1272,7 +1234,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { TexStorage2DEXT cmd; cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); - EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(0u, memory_tracker->GetPoolSize()); EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); } @@ -1307,7 +1269,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { CopyTexImage2D cmd; cmd.Init(target, level, internal_format, 0, 0, width, height); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); EXPECT_EQ(GL_NO_ERROR, GetGLError()); // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails. EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) @@ -1315,7 +1277,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { .RetiresOnSaturation(); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); } TEST_P(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { @@ -1342,7 +1304,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 8, 4); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_NO_ERROR, GetGLError()); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); // Check we get out of memory and no call to glRenderbufferStorage if Ensure // fails. EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) @@ -1350,7 +1312,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { .RetiresOnSaturation(); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); } TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { @@ -1360,6 +1322,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { InitState init; init.bind_generates_resource = true; InitDecoder(init); + EXPECT_EQ(0u, memory_tracker->GetPoolSize()); DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); EXPECT_CALL(*gl_, GetError()) .WillOnce(Return(GL_NO_ERROR)) @@ -1375,7 +1338,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { cmd.Init(GL_ARRAY_BUFFER, 128, 0, 0, GL_STREAM_DRAW); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_NO_ERROR, GetGLError()); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); // Check we get out of memory and no call to glBufferData if Ensure // fails. EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) @@ -1383,7 +1346,7 @@ TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { .RetiresOnSaturation(); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); - EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); + EXPECT_EQ(128u, memory_tracker->GetPoolSize()); } TEST_P(GLES2DecoderManualInitTest, ImmutableCopyTexImage2D) { diff --git a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h index 229987d..71c0e03 100644 --- a/gpu/command_buffer/service/gles2_cmd_validation_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_validation_autogen.h @@ -88,7 +88,6 @@ ValueValidator<GLenum> texture_internal_format_storage; ValueValidator<GLenum> texture_mag_filter_mode; ValueValidator<GLenum> texture_min_filter_mode; ValueValidator<GLenum> texture_parameter; -ValueValidator<GLenum> texture_pool; ValueValidator<GLenum> texture_target; ValueValidator<GLenum> texture_usage; ValueValidator<GLenum> texture_wrap_mode; diff --git a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h index ea6a90e..aa05581 100644 --- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h +++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h @@ -854,8 +854,8 @@ static const GLenum valid_texture_min_filter_mode_table[] = { }; static const GLenum valid_texture_parameter_table[] = { - GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, + GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, + GL_TEXTURE_WRAP_T, }; static const GLenum valid_texture_parameter_table_es3[] = { @@ -866,10 +866,6 @@ static const GLenum valid_texture_parameter_table_es3[] = { GL_TEXTURE_WRAP_R, }; -static const GLenum valid_texture_pool_table[] = { - GL_TEXTURE_POOL_MANAGED_CHROMIUM, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, -}; - static const GLenum valid_texture_target_table[] = { GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_POSITIVE_X, @@ -1086,8 +1082,6 @@ Validators::Validators() arraysize(valid_texture_min_filter_mode_table)), texture_parameter(valid_texture_parameter_table, arraysize(valid_texture_parameter_table)), - texture_pool(valid_texture_pool_table, - arraysize(valid_texture_pool_table)), texture_target(valid_texture_target_table, arraysize(valid_texture_target_table)), texture_usage(valid_texture_usage_table, diff --git a/gpu/command_buffer/service/memory_tracking.h b/gpu/command_buffer/service/memory_tracking.h index 14bf29c..5b0cd22 100644 --- a/gpu/command_buffer/service/memory_tracking.h +++ b/gpu/command_buffer/service/memory_tracking.h @@ -18,14 +18,8 @@ namespace gles2 { // statistics to the global GpuMemoryManager. class MemoryTracker : public base::RefCounted<MemoryTracker> { public: - enum Pool { - kUnmanaged, - kManaged - }; - virtual void TrackMemoryAllocatedChange(size_t old_size, - size_t new_size, - Pool pool) = 0; + size_t new_size) = 0; // Ensure a certain amount of GPU memory is free. Returns true on success. virtual bool EnsureGPUMemoryAvailable(size_t size_needed) = 0; @@ -54,9 +48,8 @@ class MemoryTracker : public base::RefCounted<MemoryTracker> { // MemoryTracker. class MemoryTypeTracker { public: - MemoryTypeTracker(MemoryTracker* memory_tracker, MemoryTracker::Pool pool) + MemoryTypeTracker(MemoryTracker* memory_tracker) : memory_tracker_(memory_tracker), - pool_(pool), has_done_update_(false), mem_represented_(0), mem_represented_at_last_update_(0) { @@ -100,15 +93,13 @@ class MemoryTypeTracker { if (memory_tracker_) { memory_tracker_->TrackMemoryAllocatedChange( mem_represented_at_last_update_, - mem_represented_, - pool_); + mem_represented_); } has_done_update_ = true; mem_represented_at_last_update_ = mem_represented_; } MemoryTracker* memory_tracker_; - MemoryTracker::Pool pool_; bool has_done_update_; size_t mem_represented_; size_t mem_represented_at_last_update_; diff --git a/gpu/command_buffer/service/mocks.h b/gpu/command_buffer/service/mocks.h index b503ce0..0824d8e 100644 --- a/gpu/command_buffer/service/mocks.h +++ b/gpu/command_buffer/service/mocks.h @@ -142,8 +142,8 @@ class MockMemoryTracker : public MemoryTracker { public: MockMemoryTracker(); - MOCK_METHOD3(TrackMemoryAllocatedChange, void( - size_t old_size, size_t new_size, Pool pool)); + MOCK_METHOD2(TrackMemoryAllocatedChange, void( + size_t old_size, size_t new_size)); MOCK_METHOD1(EnsureGPUMemoryAvailable, bool(size_t size_needed)); MOCK_CONST_METHOD0(ClientTracingId, uint64_t()); MOCK_CONST_METHOD0(ClientId, int()); diff --git a/gpu/command_buffer/service/renderbuffer_manager.cc b/gpu/command_buffer/service/renderbuffer_manager.cc index 54c18be..d9c82ae 100644 --- a/gpu/command_buffer/service/renderbuffer_manager.cc +++ b/gpu/command_buffer/service/renderbuffer_manager.cc @@ -49,7 +49,7 @@ RenderbufferManager::RenderbufferManager(MemoryTracker* memory_tracker, GLint max_samples, FeatureInfo* feature_info) : memory_type_tracker_( - new MemoryTypeTracker(memory_tracker, MemoryTracker::kUnmanaged)), + new MemoryTypeTracker(memory_tracker)), memory_tracker_(memory_tracker), max_renderbuffer_size_(max_renderbuffer_size), max_samples_(max_samples), diff --git a/gpu/command_buffer/service/renderbuffer_manager_unittest.cc b/gpu/command_buffer/service/renderbuffer_manager_unittest.cc index 9957203..beebe0e 100644 --- a/gpu/command_buffer/service/renderbuffer_manager_unittest.cc +++ b/gpu/command_buffer/service/renderbuffer_manager_unittest.cc @@ -72,9 +72,9 @@ class RenderbufferManagerMemoryTrackerTest scoped_refptr<MockMemoryTracker> mock_memory_tracker_; }; -#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ - EXPECT_CALL(*mock_memory_tracker_.get(), \ - TrackMemoryAllocatedChange(old_size, new_size, pool)) \ +#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size) \ + EXPECT_CALL(*mock_memory_tracker_.get(), \ + TrackMemoryAllocatedChange(old_size, new_size)) \ .Times(1).RetiresOnSaturation() // GCC requires these declarations, but MSVC requires they not be present @@ -180,7 +180,7 @@ TEST_F(RenderbufferManagerTest, Renderbuffer) { TEST_F(RenderbufferManagerMemoryTrackerTest, Basic) { const GLuint kClient1Id = 1; const GLuint kService1Id = 11; - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); manager_->CreateRenderbuffer(kClient1Id, kService1Id); Renderbuffer* renderbuffer1 = manager_->GetRenderbuffer(kClient1Id); @@ -197,16 +197,12 @@ TEST_F(RenderbufferManagerMemoryTrackerTest, Basic) { kWidth, kHeight1, kSamples, kFormat, &expected_size_1); manager_->ComputeEstimatedRenderbufferSize( kWidth, kHeight2, kSamples, kFormat, &expected_size_2); - EXPECT_MEMORY_ALLOCATION_CHANGE( - 0, expected_size_1, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, expected_size_1); manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight1); - EXPECT_MEMORY_ALLOCATION_CHANGE( - expected_size_1, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE( - 0, expected_size_2, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(expected_size_1, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, expected_size_2); manager_->SetInfo(renderbuffer1, kSamples, kFormat, kWidth, kHeight2); - EXPECT_MEMORY_ALLOCATION_CHANGE( - expected_size_2, 0, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(expected_size_2, 0); EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, ::testing::Pointee(kService1Id))) .Times(1) .RetiresOnSaturation(); diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc index 4b8d8fc..edc6662 100644 --- a/gpu/command_buffer/service/test_helper.cc +++ b/gpu/command_buffer/service/test_helper.cc @@ -822,12 +822,10 @@ void TestHelper::SetTexParameteriWithExpectations( TextureManager* manager, TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { if (error == GL_NO_ERROR) { - if (pname != GL_TEXTURE_POOL_CHROMIUM) { - EXPECT_CALL(*gl, TexParameteri(texture_ref->texture()->target(), - pname, value)) - .Times(1) - .RetiresOnSaturation(); - } + EXPECT_CALL(*gl, TexParameteri(texture_ref->texture()->target(), + pname, value)) + .Times(1) + .RetiresOnSaturation(); } else if (error == GL_INVALID_ENUM) { EXPECT_CALL(*error_state, SetGLErrorInvalidEnum(_, _, _, value, _)) .Times(1) diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc index db8921f..716bedc 100644 --- a/gpu/command_buffer/service/texture_manager.cc +++ b/gpu/command_buffer/service/texture_manager.cc @@ -302,8 +302,7 @@ void TextureManager::Destroy(bool have_context) { glDeleteTextures(arraysize(black_texture_ids_), black_texture_ids_); } - DCHECK_EQ(0u, memory_tracker_managed_->GetMemRepresented()); - DCHECK_EQ(0u, memory_tracker_unmanaged_->GetMemRepresented()); + DCHECK_EQ(0u, memory_type_tracker_->GetMemRepresented()); } Texture::Texture(GLuint service_id) @@ -320,7 +319,6 @@ Texture::Texture(GLuint service_id) wrap_s_(GL_REPEAT), wrap_t_(GL_REPEAT), usage_(GL_NONE), - pool_(GL_TEXTURE_POOL_UNMANAGED_CHROMIUM), compare_func_(GL_LEQUAL), compare_mode_(GL_NONE), max_lod_(1000.0f), @@ -381,7 +379,7 @@ void Texture::RemoveTextureRef(TextureRef* ref, bool have_context) { MemoryTypeTracker* Texture::GetMemTracker() { DCHECK(memory_tracking_ref_); - return memory_tracking_ref_->manager()->GetMemTracker(pool_); + return memory_tracking_ref_->manager()->GetMemTracker(); } Texture::LevelInfo::LevelInfo() @@ -953,14 +951,6 @@ GLenum Texture::SetParameteri( } mag_filter_ = param; break; - case GL_TEXTURE_POOL_CHROMIUM: - if (!feature_info->validators()->texture_pool.IsValid(param)) { - return GL_INVALID_ENUM; - } - GetMemTracker()->TrackMemFree(estimated_size()); - pool_ = param; - GetMemTracker()->TrackMemAlloc(estimated_size()); - break; case GL_TEXTURE_WRAP_R: if (!feature_info->validators()->texture_wrap_mode.IsValid(param)) { return GL_INVALID_ENUM; @@ -1029,7 +1019,6 @@ GLenum Texture::SetParameterf( switch (pname) { case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: - case GL_TEXTURE_POOL_CHROMIUM: case GL_TEXTURE_WRAP_R: case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: @@ -1365,10 +1354,7 @@ TextureManager::TextureManager(MemoryTracker* memory_tracker, GLint max_rectangle_texture_size, GLint max_3d_texture_size, bool use_default_textures) - : memory_tracker_managed_( - new MemoryTypeTracker(memory_tracker, MemoryTracker::kManaged)), - memory_tracker_unmanaged_( - new MemoryTypeTracker(memory_tracker, MemoryTracker::kUnmanaged)), + : memory_type_tracker_(new MemoryTypeTracker(memory_tracker)), memory_tracker_(memory_tracker), feature_info_(feature_info), framebuffer_manager_(NULL), @@ -1614,11 +1600,7 @@ void TextureManager::SetParameteri( error_state, result, function_name, pname, param); } } else { - // Texture tracking pools exist only for the command decoder, so - // do not pass them on to the native GL implementation. - if (pname != GL_TEXTURE_POOL_CHROMIUM) { - glTexParameteri(texture->target(), pname, param); - } + glTexParameteri(texture->target(), pname, param); } } @@ -1638,11 +1620,7 @@ void TextureManager::SetParameterf( error_state, result, function_name, pname, param); } } else { - // Texture tracking pools exist only for the command decoder, so - // do not pass them on to the native GL implementation. - if (pname != GL_TEXTURE_POOL_CHROMIUM) { - glTexParameterf(texture->target(), pname, param); - } + glTexParameterf(texture->target(), pname, param); } } @@ -1719,19 +1697,8 @@ void TextureManager::StopTracking(TextureRef* ref) { DCHECK_GE(num_uncleared_mips_, 0); } -MemoryTypeTracker* TextureManager::GetMemTracker(GLenum tracking_pool) { - switch (tracking_pool) { - case GL_TEXTURE_POOL_MANAGED_CHROMIUM: - return memory_tracker_managed_.get(); - break; - case GL_TEXTURE_POOL_UNMANAGED_CHROMIUM: - return memory_tracker_unmanaged_.get(); - break; - default: - break; - } - NOTREACHED(); - return NULL; +MemoryTypeTracker* TextureManager::GetMemTracker() { + return memory_type_tracker_.get(); } Texture* TextureManager::GetTextureForServiceId(GLuint service_id) const { @@ -1962,7 +1929,7 @@ bool TextureManager::ValidateTexImage( return false; } - if (!memory_tracker_managed_->EnsureGPUMemoryAvailable(args.pixels_size)) { + if (!memory_type_tracker_->EnsureGPUMemoryAvailable(args.pixels_size)) { ERRORSTATE_SET_GL_ERROR(error_state, GL_OUT_OF_MEMORY, function_name, "out of memory"); return false; @@ -2015,7 +1982,7 @@ void TextureManager::ValidateAndDoTexImage( } DCHECK(undefined_faces.size()); - if (!memory_tracker_managed_->EnsureGPUMemoryAvailable( + if (!memory_type_tracker_->EnsureGPUMemoryAvailable( undefined_faces.size() * args.pixels_size)) { ERRORSTATE_SET_GL_ERROR(state->GetErrorState(), GL_OUT_OF_MEMORY, function_name, "out of memory"); diff --git a/gpu/command_buffer/service/texture_manager.h b/gpu/command_buffer/service/texture_manager.h index ab5cf4d..a04cfa2 100644 --- a/gpu/command_buffer/service/texture_manager.h +++ b/gpu/command_buffer/service/texture_manager.h @@ -65,10 +65,6 @@ class GPU_EXPORT Texture { return usage_; } - GLenum pool() const { - return pool_; - } - GLenum compare_func() const { return compare_func_; } @@ -439,7 +435,6 @@ class GPU_EXPORT Texture { GLenum wrap_s_; GLenum wrap_t_; GLenum usage_; - GLenum pool_; GLenum compare_func_; GLenum compare_mode_; GLfloat max_lod_; @@ -792,9 +787,7 @@ class GPU_EXPORT TextureManager : public base::trace_event::MemoryDumpProvider { } size_t mem_represented() const { - return - memory_tracker_managed_->GetMemRepresented() + - memory_tracker_unmanaged_->GetMemRepresented(); + return memory_type_tracker_->GetMemRepresented(); } void SetLevelImage( @@ -910,9 +903,8 @@ class GPU_EXPORT TextureManager : public base::trace_event::MemoryDumpProvider { void DumpTextureRef(base::trace_event::ProcessMemoryDump* pmd, TextureRef* ref); - MemoryTypeTracker* GetMemTracker(GLenum texture_pool); - scoped_ptr<MemoryTypeTracker> memory_tracker_managed_; - scoped_ptr<MemoryTypeTracker> memory_tracker_unmanaged_; + MemoryTypeTracker* GetMemTracker(); + scoped_ptr<MemoryTypeTracker> memory_type_tracker_; MemoryTracker* memory_tracker_; scoped_refptr<FeatureInfo> feature_info_; diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc index 262faab..90e90c4 100644 --- a/gpu/command_buffer/service/texture_manager_unittest.cc +++ b/gpu/command_buffer/service/texture_manager_unittest.cc @@ -550,9 +550,9 @@ class TextureMemoryTrackerTest : public TextureTestBase { scoped_refptr<MockMemoryTracker> mock_memory_tracker_; }; -#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ - EXPECT_CALL(*mock_memory_tracker_.get(), \ - TrackMemoryAllocatedChange(old_size, new_size, pool)) \ +#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size) \ + EXPECT_CALL(*mock_memory_tracker_.get(), \ + TrackMemoryAllocatedChange(old_size, new_size)) \ .Times(1).RetiresOnSaturation() TEST_F(TextureTest, Basic) { @@ -623,33 +623,16 @@ TEST_F(TextureTest, EstimatedSize) { TEST_F(TextureMemoryTrackerTest, EstimatedSize) { manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128); manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 4)); - EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 256, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 256); manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 4)); // Add expectation for texture deletion. - EXPECT_MEMORY_ALLOCATION_CHANGE(256, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); -} - -TEST_F(TextureMemoryTrackerTest, SetParameterPool) { - manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); - manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, - 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 4)); - EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kManaged); - SetParameter(texture_ref_.get(), - GL_TEXTURE_POOL_CHROMIUM, - GL_TEXTURE_POOL_MANAGED_CHROMIUM, - GL_NO_ERROR); - // Add expectation for texture deletion. - EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kManaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(256, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); } TEST_F(TextureTest, POT2D) { @@ -703,14 +686,14 @@ TEST_F(TextureTest, POT2D) { TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64); manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); - EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84); EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); - EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0, MemoryTracker::kUnmanaged); - EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); + EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); + EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); } TEST_F(TextureTest, UnusedMips) { @@ -1804,22 +1787,18 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { class CountingMemoryTracker : public MemoryTracker { public: CountingMemoryTracker() { - current_size_[0] = 0; - current_size_[1] = 0; + current_size_ = 0; } void TrackMemoryAllocatedChange(size_t old_size, - size_t new_size, - Pool pool) override { - DCHECK_LT(static_cast<size_t>(pool), arraysize(current_size_)); - current_size_[pool] += new_size - old_size; + size_t new_size) override { + current_size_ += new_size - old_size; } bool EnsureGPUMemoryAvailable(size_t size_needed) override { return true; } - size_t GetSize(Pool pool) { - DCHECK_LT(static_cast<size_t>(pool), arraysize(current_size_)); - return current_size_[pool]; + size_t GetSize() { + return current_size_; } uint64_t ClientTracingId() const override { return 0; } @@ -1831,7 +1810,7 @@ class CountingMemoryTracker : public MemoryTracker { private: ~CountingMemoryTracker() override {} - size_t current_size_[2]; + size_t current_size_; DISALLOW_COPY_AND_ASSIGN(CountingMemoryTracker); }; @@ -2026,8 +2005,8 @@ TEST_F(SharedTextureTest, FBOCompletenessCheck) { } TEST_F(SharedTextureTest, Memory) { - size_t initial_memory1 = memory_tracker1_->GetSize(MemoryTracker::kUnmanaged); - size_t initial_memory2 = memory_tracker2_->GetSize(MemoryTracker::kUnmanaged); + size_t initial_memory1 = memory_tracker1_->GetSize(); + size_t initial_memory2 = memory_tracker2_->GetSize(); // Newly created texture is unrenderable. scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); @@ -2037,24 +2016,23 @@ TEST_F(SharedTextureTest, Memory) { EXPECT_LT(0u, ref1->texture()->estimated_size()); EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(), - memory_tracker1_->GetSize(MemoryTracker::kUnmanaged)); + memory_tracker1_->GetSize()); // Associate new texture ref to other texture manager, it doesn't account for // the texture memory, the first memory tracker still has it. scoped_refptr<TextureRef> ref2 = texture_manager2_->Consume(20, ref1->texture()); EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(), - memory_tracker1_->GetSize(MemoryTracker::kUnmanaged)); - EXPECT_EQ(initial_memory2, - memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); + memory_tracker1_->GetSize()); + EXPECT_EQ(initial_memory2, memory_tracker2_->GetSize()); // Delete the texture, memory should go to the remaining tracker. texture_manager1_->RemoveTexture(10); ref1 = NULL; EXPECT_EQ(initial_memory1, - memory_tracker1_->GetSize(MemoryTracker::kUnmanaged)); + memory_tracker1_->GetSize()); EXPECT_EQ(initial_memory2 + ref2->texture()->estimated_size(), - memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); + memory_tracker2_->GetSize()); EXPECT_CALL(*gl_, DeleteTextures(1, _)) .Times(1) @@ -2062,7 +2040,7 @@ TEST_F(SharedTextureTest, Memory) { ref2 = NULL; texture_manager2_->RemoveTexture(20); EXPECT_EQ(initial_memory2, - memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); + memory_tracker2_->GetSize()); } TEST_F(SharedTextureTest, Images) { diff --git a/ui/gl/gl_bindings.h b/ui/gl/gl_bindings.h index 0972598..c1ad779 100644 --- a/ui/gl/gl_bindings.h +++ b/ui/gl/gl_bindings.h @@ -73,11 +73,6 @@ #define GL_UNPACK_COLORSPACE_CONVERSION_CHROMIUM 0x9243 #define GL_BIND_GENERATES_RESOURCE_CHROMIUM 0x9244 -// GL_CHROMIUM_gpu_memory_manager -#define GL_TEXTURE_POOL_CHROMIUM 0x6000 -#define GL_TEXTURE_POOL_MANAGED_CHROMIUM 0x6001 -#define GL_TEXTURE_POOL_UNMANAGED_CHROMIUM 0x6002 - // GL_ANGLE_pack_reverse_row_order #define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 |