Index: gpu/command_buffer/client/gles2_implementation.cc |
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc |
index 5dcc9dd3844c32e51eb7b6c1b1fd240c5bebb135..d4e77f2d2c492dc9f1951b740ba3c451d8dcb50a 100644 |
--- a/gpu/command_buffer/client/gles2_implementation.cc |
+++ b/gpu/command_buffer/client/gles2_implementation.cc |
@@ -331,9 +331,16 @@ void GLES2Implementation::SetAggressivelyFreeResources( |
"aggressively_free_resources", aggressively_free_resources); |
aggressively_free_resources_ = aggressively_free_resources; |
- // ShallowFlushCHROMIUM will free resources if |aggressively_free_resources_| |
- // is false. |
- ShallowFlushCHROMIUM(); |
+ if (aggressively_free_resources_ && helper_->HaveRingBuffer()) { |
+ // Ensure that we clean up as much cache memory as possible and fully flush. |
+ FlushDriverCachesCHROMIUM(); |
+ |
+ // Flush will delete transfer buffer resources if |
+ // |aggressively_free_resources_| is true. |
+ Flush(); |
+ } else { |
+ ShallowFlushCHROMIUM(); |
+ } |
} |
void GLES2Implementation::WaitForCmd() { |