diff options
Diffstat (limited to 'content/common')
-rw-r--r-- | content/common/gpu/gpu_memory_manager_unittest.cc | 4 | ||||
-rw-r--r-- | content/common/gpu/gpu_messages.h | 8 | ||||
-rw-r--r-- | content/common/gpu/image_transport_surface.cc | 11 | ||||
-rw-r--r-- | content/common/gpu/image_transport_surface.h | 4 | ||||
-rw-r--r-- | content/common/gpu/texture_image_transport_surface.cc | 107 | ||||
-rw-r--r-- | content/common/gpu/texture_image_transport_surface.h | 10 |
6 files changed, 33 insertions, 111 deletions
diff --git a/content/common/gpu/gpu_memory_manager_unittest.cc b/content/common/gpu/gpu_memory_manager_unittest.cc index 8a9a4fd..0e861aa 100644 --- a/content/common/gpu/gpu_memory_manager_unittest.cc +++ b/content/common/gpu/gpu_memory_manager_unittest.cc @@ -41,6 +41,8 @@ class FakeCommandBufferStub : public GpuCommandBufferStubBase { const GpuCommandBufferStubBase& stub) const { return false; } + virtual void SendMemoryAllocationToProxy(const GpuMemoryAllocation& alloc) { + } virtual void SetMemoryAllocation(const GpuMemoryAllocation& alloc) { allocation_ = alloc; } @@ -75,6 +77,8 @@ class FakeCommandBufferStubWithoutSurface : public GpuCommandBufferStubBase { share_group_.end(), &stub) != share_group_.end(); } + virtual void SendMemoryAllocationToProxy(const GpuMemoryAllocation& alloc) { + } virtual void SetMemoryAllocation(const GpuMemoryAllocation& alloc) { allocation_ = alloc; } diff --git a/content/common/gpu/gpu_messages.h b/content/common/gpu/gpu_messages.h index ddaaff1..3d61a72 100644 --- a/content/common/gpu/gpu_messages.h +++ b/content/common/gpu/gpu_messages.h @@ -58,8 +58,6 @@ IPC_STRUCT_BEGIN(GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params) #elif defined(OS_MACOSX) IPC_STRUCT_MEMBER(gfx::PluginWindowHandle, window) #endif - IPC_STRUCT_MEMBER(uint32, protection_state_id) - IPC_STRUCT_MEMBER(bool, skip_ack) IPC_STRUCT_END() #undef IPC_MESSAGE_EXPORT #define IPC_MESSAGE_EXPORT @@ -75,7 +73,6 @@ IPC_STRUCT_BEGIN(GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params) #if defined(OS_MACOSX) IPC_STRUCT_MEMBER(gfx::PluginWindowHandle, window) #endif - IPC_STRUCT_MEMBER(uint32, protection_state_id) IPC_STRUCT_END() IPC_STRUCT_BEGIN(GpuHostMsg_AcceleratedSurfaceRelease_Params) @@ -204,11 +201,6 @@ IPC_MESSAGE_ROUTED2(AcceleratedSurfaceMsg_NewACK, uint64 /* surface_handle */, TransportDIB::Handle /* shared memory buffer */) -// Tells the GPU process if it's worth suggesting release of the front surface. -IPC_MESSAGE_ROUTED2(AcceleratedSurfaceMsg_SetFrontSurfaceIsProtected, - bool /* is_protected */, - uint32 /* protection_state_id */) - // Tells the GPU process that the browser process handled the swap // buffers request. IPC_MESSAGE_ROUTED0(AcceleratedSurfaceMsg_BuffersSwappedACK) diff --git a/content/common/gpu/image_transport_surface.cc b/content/common/gpu/image_transport_surface.cc index 4ab12d4..7e49b9f 100644 --- a/content/common/gpu/image_transport_surface.cc +++ b/content/common/gpu/image_transport_surface.cc @@ -21,10 +21,6 @@ ImageTransportSurface::ImageTransportSurface() {} ImageTransportSurface::~ImageTransportSurface() {} -void ImageTransportSurface::OnSetFrontSurfaceIsProtected( - bool is_protected, uint32 protection_state_id) { -} - void ImageTransportSurface::GetRegionsToCopy( const gfx::Rect& previous_damage_rect, const gfx::Rect& new_damage_rect, @@ -100,8 +96,6 @@ bool ImageTransportHelper::OnMessageReceived(const IPC::Message& message) { OnPostSubBufferACK) IPC_MESSAGE_HANDLER(AcceleratedSurfaceMsg_NewACK, OnNewSurfaceACK) - IPC_MESSAGE_HANDLER(AcceleratedSurfaceMsg_SetFrontSurfaceIsProtected, - OnSetFrontSurfaceIsProtected) IPC_MESSAGE_HANDLER(AcceleratedSurfaceMsg_ResizeViewACK, OnResizeViewACK); IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -207,11 +201,6 @@ void ImageTransportHelper::OnNewSurfaceACK( surface_->OnNewSurfaceACK(surface_handle, shm_handle); } -void ImageTransportHelper::OnSetFrontSurfaceIsProtected( - bool is_protected, uint32 protection_state_id) { - surface_->OnSetFrontSurfaceIsProtected(is_protected, protection_state_id); -} - void ImageTransportHelper::OnBuffersSwappedACK() { surface_->OnBuffersSwappedACK(); } diff --git a/content/common/gpu/image_transport_surface.h b/content/common/gpu/image_transport_surface.h index 936f40d..019aa50 100644 --- a/content/common/gpu/image_transport_surface.h +++ b/content/common/gpu/image_transport_surface.h @@ -67,8 +67,6 @@ class ImageTransportSurface { virtual void OnPostSubBufferACK() = 0; virtual void OnResizeViewACK() = 0; virtual void OnResize(gfx::Size size) = 0; - virtual void OnSetFrontSurfaceIsProtected(bool is_protected, - uint32 protection_state_id); // Creates the appropriate surface depending on the GL implementation. static scoped_refptr<gfx::GLSurface> @@ -140,8 +138,6 @@ class ImageTransportHelper : public IPC::Channel::Listener { void OnBuffersSwappedACK(); void OnPostSubBufferACK(); void OnResizeViewACK(); - void OnSetFrontSurfaceIsProtected(bool is_protected, - uint32 protection_state_id); // Backbuffer resize callback. void Resize(gfx::Size size); diff --git a/content/common/gpu/texture_image_transport_surface.cc b/content/common/gpu/texture_image_transport_surface.cc index e5fd148..ec81bbc 100644 --- a/content/common/gpu/texture_image_transport_surface.cc +++ b/content/common/gpu/texture_image_transport_surface.cc @@ -69,8 +69,6 @@ TextureImageTransportSurface::TextureImageTransportSurface( stub_destroyed_(false), backbuffer_suggested_allocation_(true), frontbuffer_suggested_allocation_(true), - frontbuffer_is_protected_(true), - protection_state_id_(0), handle_(handle), parent_stub_(NULL) { helper_.reset(new ImageTransportHelper(this, @@ -184,36 +182,16 @@ void TextureImageTransportSurface::SetBackbufferAllocation(bool allocation) { if (!helper_->MakeCurrent()) return; - if (backbuffer_suggested_allocation_) { - DCHECK(!textures_[back()].info->service_id() || - !textures_[back()].sent_to_client); + if (backbuffer_suggested_allocation_) CreateBackTexture(textures_[back()].size); - } else { - ReleaseTexture(back()); - } + else + ReleaseBackTexture(); } void TextureImageTransportSurface::SetFrontbufferAllocation(bool allocation) { if (frontbuffer_suggested_allocation_ == allocation) return; frontbuffer_suggested_allocation_ = allocation; - AdjustFrontBufferAllocation(); -} - -void TextureImageTransportSurface::AdjustFrontBufferAllocation() { - if (!helper_->MakeCurrent()) - return; - - if (!frontbuffer_suggested_allocation_ && !frontbuffer_is_protected_ && - textures_[front()].info->service_id()) { - ReleaseTexture(front()); - if (textures_[front()].sent_to_client) { - GpuHostMsg_AcceleratedSurfaceRelease_Params params; - params.identifier = textures_[front()].client_id; - helper_->SendAcceleratedSurfaceRelease(params); - textures_[front()].sent_to_client = false; - } - } } void* TextureImageTransportSurface::GetShareHandle() { @@ -254,7 +232,7 @@ void TextureImageTransportSurface::OnWillDestroyStub( bool TextureImageTransportSurface::SwapBuffers() { DCHECK(backbuffer_suggested_allocation_); - if (!frontbuffer_suggested_allocation_ || !frontbuffer_is_protected_) + if (!frontbuffer_suggested_allocation_) return true; if (!parent_stub_) { LOG(ERROR) << "SwapBuffers failed because no parent stub."; @@ -263,14 +241,12 @@ bool TextureImageTransportSurface::SwapBuffers() { glFlush(); front_ = back(); - previous_damage_rect_ = gfx::Rect(textures_[front()].size); + previous_damage_rect_ = gfx::Rect(textures_[front_].size); - DCHECK(textures_[front()].client_id != 0); + DCHECK(textures_[front_].client_id != 0); GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params params; - params.surface_handle = textures_[front()].client_id; - params.protection_state_id = protection_state_id_; - params.skip_ack = false; + params.surface_handle = textures_[front_].client_id; helper_->SendAcceleratedSurfaceBuffersSwapped(params); helper_->SetScheduled(false); return true; @@ -279,30 +255,32 @@ bool TextureImageTransportSurface::SwapBuffers() { bool TextureImageTransportSurface::PostSubBuffer( int x, int y, int width, int height) { DCHECK(backbuffer_suggested_allocation_); - DCHECK(textures_[back()].info->service_id()); - if (!frontbuffer_suggested_allocation_ || !frontbuffer_is_protected_) + if (!frontbuffer_suggested_allocation_) return true; // If we are recreating the frontbuffer with this swap, make sure we are // drawing a full frame. - DCHECK(textures_[front()].info->service_id() || + DCHECK(textures_[front_].info->service_id() || (!x && !y && gfx::Size(width, height) == textures_[back()].size)); if (!parent_stub_) { LOG(ERROR) << "PostSubBuffer failed because no parent stub."; return false; } + DCHECK(textures_[back()].info); + int back_texture_service_id = textures_[back()].info->service_id(); + + DCHECK(textures_[front_].info); + int front_texture_service_id = textures_[front_].info->service_id(); + + gfx::Size expected_size = textures_[back()].size; + bool surfaces_same_size = textures_[front_].size == expected_size; + const gfx::Rect new_damage_rect(x, y, width, height); // An empty damage rect is a successful no-op. if (new_damage_rect.IsEmpty()) return true; - int back_texture_service_id = textures_[back()].info->service_id(); - int front_texture_service_id = textures_[front()].info->service_id(); - - gfx::Size expected_size = textures_[back()].size; - bool surfaces_same_size = textures_[front()].size == expected_size; - if (surfaces_same_size) { std::vector<gfx::Rect> regions_to_copy; GetRegionsToCopy(previous_damage_rect_, new_damage_rect, ®ions_to_copy); @@ -329,19 +307,17 @@ bool TextureImageTransportSurface::PostSubBuffer( glFlush(); front_ = back(); - previous_damage_rect_ = new_damage_rect; - - DCHECK(textures_[front()].client_id); GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params params; - params.surface_handle = textures_[front()].client_id; + params.surface_handle = textures_[front_].client_id; params.x = x; params.y = y; params.width = width; params.height = height; - params.protection_state_id = protection_state_id_; helper_->SendAcceleratedSurfacePostSubBuffer(params); helper_->SetScheduled(false); + + previous_damage_rect_ = new_damage_rect; return true; } @@ -366,35 +342,10 @@ void TextureImageTransportSurface::OnNewSurfaceACK( uint64 surface_handle, TransportDIB::Handle /*shm_handle*/) { } -void TextureImageTransportSurface::OnSetFrontSurfaceIsProtected( - bool is_protected, uint32 protection_state_id) { - protection_state_id_ = protection_state_id; - if (frontbuffer_is_protected_ == is_protected) - return; - frontbuffer_is_protected_ = is_protected; - AdjustFrontBufferAllocation(); - - // If surface is set to protected, and we haven't actually released it yet, - // we can set the ui surface handle now just by sending a swap message. - if (is_protected && textures_[front()].info->service_id() && - textures_[front()].sent_to_client) { - GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params params; - params.surface_handle = textures_[front()].client_id; - params.protection_state_id = protection_state_id_; - params.skip_ack = true; - helper_->SendAcceleratedSurfaceBuffersSwapped(params); - } -} - void TextureImageTransportSurface::OnBuffersSwappedACK() { if (helper_->MakeCurrent()) { - if (textures_[front()].size != textures_[back()].size || - !textures_[back()].info->service_id() || - !textures_[back()].sent_to_client) { - // We may get an ACK from a stale swap just to reschedule. In that case, - // we may not have a backbuffer suggestion and should not recreate one. - if (backbuffer_suggested_allocation_) - CreateBackTexture(textures_[front()].size); + if (textures_[front_].size != textures_[back()].size) { + CreateBackTexture(textures_[front_].size); } else { AttachBackTextureToFBO(); } @@ -413,11 +364,10 @@ void TextureImageTransportSurface::OnResizeViewACK() { NOTREACHED(); } -void TextureImageTransportSurface::ReleaseTexture(int id) { +void TextureImageTransportSurface::ReleaseBackTexture() { if (!parent_stub_) return; - Texture& texture = textures_[id]; - TextureInfo* info = texture.info; + TextureInfo* info = textures_[back()].info; DCHECK(info); GLuint service_id = info->service_id(); @@ -442,7 +392,7 @@ void TextureImageTransportSurface::CreateBackTexture(const gfx::Size& size) { GLuint service_id = info->service_id(); - if (service_id && texture.size == size && texture.sent_to_client) + if (service_id && texture.size == size) return; if (!service_id) { @@ -493,14 +443,13 @@ void TextureImageTransportSurface::CreateBackTexture(const gfx::Size& size) { void TextureImageTransportSurface::AttachBackTextureToFBO() { if (!parent_stub_) return; - TextureInfo* info = textures_[back()].info; - DCHECK(info); + DCHECK(textures_[back()].info); ScopedFrameBufferBinder fbo_binder(fbo_id_); glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - info->service_id(), + textures_[back()].info->service_id(), 0); glFlush(); CHECK_GL_ERROR(); diff --git a/content/common/gpu/texture_image_transport_surface.h b/content/common/gpu/texture_image_transport_surface.h index 82869e7..907bfa4 100644 --- a/content/common/gpu/texture_image_transport_surface.h +++ b/content/common/gpu/texture_image_transport_surface.h @@ -48,9 +48,6 @@ class TextureImageTransportSurface : virtual void OnBuffersSwappedACK() OVERRIDE; virtual void OnPostSubBufferACK() OVERRIDE; virtual void OnResizeViewACK() OVERRIDE; - virtual void OnSetFrontSurfaceIsProtected( - bool is_protected, - uint32 protection_state_id) OVERRIDE; virtual void OnResize(gfx::Size size) OVERRIDE; // GpuCommandBufferStub::DestructionObserver implementation. @@ -77,11 +74,9 @@ class TextureImageTransportSurface : virtual ~TextureImageTransportSurface(); void CreateBackTexture(const gfx::Size& size); + void ReleaseBackTexture(); void AttachBackTextureToFBO(); - void ReleaseTexture(int id); void ReleaseParentStub(); - void AdjustFrontBufferAllocation(); - int front() const { return front_; } int back() const { return 1 - front_; } // The framebuffer that represents this surface (service id). Allocated lazily @@ -102,9 +97,6 @@ class TextureImageTransportSurface : bool backbuffer_suggested_allocation_; bool frontbuffer_suggested_allocation_; - bool frontbuffer_is_protected_; - uint32 protection_state_id_; - scoped_ptr<ImageTransportHelper> helper_; gfx::GLSurfaceHandle handle_; GpuCommandBufferStub* parent_stub_; |