| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 6 | 6 |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 const scoped_refptr<gfx::GLSurface>& surface) OVERRIDE; | 539 const scoped_refptr<gfx::GLSurface>& surface) OVERRIDE; |
| 540 virtual bool ProduceFrontBuffer(const Mailbox& mailbox) OVERRIDE; | 540 virtual bool ProduceFrontBuffer(const Mailbox& mailbox) OVERRIDE; |
| 541 virtual bool ResizeOffscreenFrameBuffer(const gfx::Size& size) OVERRIDE; | 541 virtual bool ResizeOffscreenFrameBuffer(const gfx::Size& size) OVERRIDE; |
| 542 void UpdateParentTextureInfo(); | 542 void UpdateParentTextureInfo(); |
| 543 virtual bool MakeCurrent() OVERRIDE; | 543 virtual bool MakeCurrent() OVERRIDE; |
| 544 virtual void ReleaseCurrent() OVERRIDE; | 544 virtual void ReleaseCurrent() OVERRIDE; |
| 545 virtual GLES2Util* GetGLES2Util() OVERRIDE { return &util_; } | 545 virtual GLES2Util* GetGLES2Util() OVERRIDE { return &util_; } |
| 546 virtual gfx::GLContext* GetGLContext() OVERRIDE { return context_.get(); } | 546 virtual gfx::GLContext* GetGLContext() OVERRIDE { return context_.get(); } |
| 547 virtual ContextGroup* GetContextGroup() OVERRIDE { return group_.get(); } | 547 virtual ContextGroup* GetContextGroup() OVERRIDE { return group_.get(); } |
| 548 virtual Capabilities GetCapabilities() OVERRIDE; | 548 virtual Capabilities GetCapabilities() OVERRIDE; |
| 549 virtual void RestoreState() const OVERRIDE; | 549 virtual void RestoreState(const ContextState* prev_state) const OVERRIDE; |
| 550 | 550 |
| 551 virtual void RestoreActiveTexture() const OVERRIDE { | 551 virtual void RestoreActiveTexture() const OVERRIDE { |
| 552 state_.RestoreActiveTexture(); | 552 state_.RestoreActiveTexture(); |
| 553 } | 553 } |
| 554 virtual void RestoreAllTextureUnitBindings() const OVERRIDE { | 554 virtual void RestoreAllTextureUnitBindings( |
| 555 state_.RestoreAllTextureUnitBindings(); | 555 const ContextState* prev_state) const OVERRIDE { |
| 556 state_.RestoreAllTextureUnitBindings(prev_state); |
| 556 } | 557 } |
| 557 virtual void RestoreAttribute(unsigned index) const OVERRIDE { | 558 virtual void RestoreAttribute(unsigned index) const OVERRIDE { |
| 558 state_.RestoreAttribute(index); | 559 state_.RestoreAttribute(index); |
| 559 } | 560 } |
| 560 virtual void RestoreBufferBindings() const OVERRIDE { | 561 virtual void RestoreBufferBindings() const OVERRIDE { |
| 561 state_.RestoreBufferBindings(); | 562 state_.RestoreBufferBindings(); |
| 562 } | 563 } |
| 563 virtual void RestoreGlobalState() const OVERRIDE { | 564 virtual void RestoreGlobalState() const OVERRIDE { |
| 564 state_.RestoreGlobalState(); | 565 state_.RestoreGlobalState(); |
| 565 } | 566 } |
| 566 virtual void RestoreProgramBindings() const OVERRIDE { | 567 virtual void RestoreProgramBindings() const OVERRIDE { |
| 567 state_.RestoreProgramBindings(); | 568 state_.RestoreProgramBindings(); |
| 568 } | 569 } |
| 569 virtual void RestoreRenderbufferBindings() const OVERRIDE { | 570 virtual void RestoreRenderbufferBindings() const OVERRIDE { |
| 570 state_.RestoreRenderbufferBindings(); | 571 state_.RestoreRenderbufferBindings(); |
| 571 } | 572 } |
| 572 virtual void RestoreTextureUnitBindings(unsigned unit) const OVERRIDE { | 573 virtual void RestoreTextureUnitBindings(unsigned unit) const OVERRIDE { |
| 573 state_.RestoreTextureUnitBindings(unit); | 574 state_.RestoreTextureUnitBindings(unit, NULL); |
| 574 } | 575 } |
| 575 virtual void RestoreFramebufferBindings() const OVERRIDE; | 576 virtual void RestoreFramebufferBindings() const OVERRIDE; |
| 576 virtual void RestoreTextureState(unsigned service_id) const OVERRIDE; | 577 virtual void RestoreTextureState(unsigned service_id) const OVERRIDE; |
| 577 | 578 |
| 578 virtual QueryManager* GetQueryManager() OVERRIDE { | 579 virtual QueryManager* GetQueryManager() OVERRIDE { |
| 579 return query_manager_.get(); | 580 return query_manager_.get(); |
| 580 } | 581 } |
| 581 virtual VertexArrayManager* GetVertexArrayManager() OVERRIDE { | 582 virtual VertexArrayManager* GetVertexArrayManager() OVERRIDE { |
| 582 return vertex_array_manager_.get(); | 583 return vertex_array_manager_.get(); |
| 583 } | 584 } |
| 584 virtual bool ProcessPendingQueries() OVERRIDE; | 585 virtual bool ProcessPendingQueries() OVERRIDE; |
| 585 virtual bool HasMoreIdleWork() OVERRIDE; | 586 virtual bool HasMoreIdleWork() OVERRIDE; |
| 586 virtual void PerformIdleWork() OVERRIDE; | 587 virtual void PerformIdleWork() OVERRIDE; |
| 587 | 588 |
| 588 virtual void WaitForReadPixels(base::Closure callback) OVERRIDE; | 589 virtual void WaitForReadPixels(base::Closure callback) OVERRIDE; |
| 589 | 590 |
| 590 virtual void SetResizeCallback( | 591 virtual void SetResizeCallback( |
| 591 const base::Callback<void(gfx::Size, float)>& callback) OVERRIDE; | 592 const base::Callback<void(gfx::Size, float)>& callback) OVERRIDE; |
| 592 | 593 |
| 593 virtual Logger* GetLogger() OVERRIDE; | 594 virtual Logger* GetLogger() OVERRIDE; |
| 594 virtual ErrorState* GetErrorState() OVERRIDE; | 595 virtual ErrorState* GetErrorState() OVERRIDE; |
| 596 virtual const ContextState* GetContextState() OVERRIDE { return &state_; } |
| 595 | 597 |
| 596 virtual void SetShaderCacheCallback( | 598 virtual void SetShaderCacheCallback( |
| 597 const ShaderCacheCallback& callback) OVERRIDE; | 599 const ShaderCacheCallback& callback) OVERRIDE; |
| 598 virtual void SetWaitSyncPointCallback( | 600 virtual void SetWaitSyncPointCallback( |
| 599 const WaitSyncPointCallback& callback) OVERRIDE; | 601 const WaitSyncPointCallback& callback) OVERRIDE; |
| 600 | 602 |
| 601 virtual AsyncPixelTransferManager* | 603 virtual AsyncPixelTransferManager* |
| 602 GetAsyncPixelTransferManager() OVERRIDE; | 604 GetAsyncPixelTransferManager() OVERRIDE; |
| 603 virtual void ResetAsyncPixelTransferManagerForTest() OVERRIDE; | 605 virtual void ResetAsyncPixelTransferManagerForTest() OVERRIDE; |
| 604 virtual void SetAsyncPixelTransferManagerForTest( | 606 virtual void SetAsyncPixelTransferManagerForTest( |
| (...skipping 3144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3749 framebuffer_state_.clear_state_dirty = false; | 3751 framebuffer_state_.clear_state_dirty = false; |
| 3750 } | 3752 } |
| 3751 } | 3753 } |
| 3752 | 3754 |
| 3753 GLuint GLES2DecoderImpl::GetBackbufferServiceId() const { | 3755 GLuint GLES2DecoderImpl::GetBackbufferServiceId() const { |
| 3754 return (offscreen_target_frame_buffer_.get()) | 3756 return (offscreen_target_frame_buffer_.get()) |
| 3755 ? offscreen_target_frame_buffer_->id() | 3757 ? offscreen_target_frame_buffer_->id() |
| 3756 : (surface_.get() ? surface_->GetBackingFrameBufferObject() : 0); | 3758 : (surface_.get() ? surface_->GetBackingFrameBufferObject() : 0); |
| 3757 } | 3759 } |
| 3758 | 3760 |
| 3759 void GLES2DecoderImpl::RestoreState() const { | 3761 void GLES2DecoderImpl::RestoreState(const ContextState* prev_state) const { |
| 3760 TRACE_EVENT1("gpu", "GLES2DecoderImpl::RestoreState", | 3762 TRACE_EVENT1("gpu", "GLES2DecoderImpl::RestoreState", |
| 3761 "context", logger_.GetLogPrefix()); | 3763 "context", logger_.GetLogPrefix()); |
| 3762 // Restore the Framebuffer first because of bugs in Intel drivers. | 3764 // Restore the Framebuffer first because of bugs in Intel drivers. |
| 3763 // Intel drivers incorrectly clip the viewport settings to | 3765 // Intel drivers incorrectly clip the viewport settings to |
| 3764 // the size of the current framebuffer object. | 3766 // the size of the current framebuffer object. |
| 3765 RestoreFramebufferBindings(); | 3767 RestoreFramebufferBindings(); |
| 3766 state_.RestoreState(); | 3768 state_.RestoreState(prev_state); |
| 3767 } | 3769 } |
| 3768 | 3770 |
| 3769 void GLES2DecoderImpl::RestoreFramebufferBindings() const { | 3771 void GLES2DecoderImpl::RestoreFramebufferBindings() const { |
| 3770 GLuint service_id = | 3772 GLuint service_id = |
| 3771 framebuffer_state_.bound_draw_framebuffer.get() | 3773 framebuffer_state_.bound_draw_framebuffer.get() |
| 3772 ? framebuffer_state_.bound_draw_framebuffer->service_id() | 3774 ? framebuffer_state_.bound_draw_framebuffer->service_id() |
| 3773 : GetBackbufferServiceId(); | 3775 : GetBackbufferServiceId(); |
| 3774 if (!features().chromium_framebuffer_multisample) { | 3776 if (!features().chromium_framebuffer_multisample) { |
| 3775 glBindFramebufferEXT(GL_FRAMEBUFFER, service_id); | 3777 glBindFramebufferEXT(GL_FRAMEBUFFER, service_id); |
| 3776 } else { | 3778 } else { |
| (...skipping 6859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10636 DoDidUseTexImageIfNeeded(texture, texture->target()); | 10638 DoDidUseTexImageIfNeeded(texture, texture->target()); |
| 10637 } | 10639 } |
| 10638 | 10640 |
| 10639 // Include the auto-generated part of this file. We split this because it means | 10641 // Include the auto-generated part of this file. We split this because it means |
| 10640 // we can easily edit the non-auto generated parts right here in this file | 10642 // we can easily edit the non-auto generated parts right here in this file |
| 10641 // instead of having to edit some template or the code generator. | 10643 // instead of having to edit some template or the code generator. |
| 10642 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10644 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 10643 | 10645 |
| 10644 } // namespace gles2 | 10646 } // namespace gles2 |
| 10645 } // namespace gpu | 10647 } // namespace gpu |
| OLD | NEW |