Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
index ca0d06a46c8dd40e5d1b548026639dfea13adce9..121550be53f788d9faecc6ab9f28918616212d8b 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -1421,10 +1421,10 @@ class GLES2DecoderImpl : public GLES2Decoder { |
switch (target) { |
case GL_FRAMEBUFFER: |
case GL_DRAW_FRAMEBUFFER_EXT: |
- framebuffer = state_.bound_draw_framebuffer.get(); |
+ framebuffer = framebuffer_state_.bound_draw_framebuffer.get(); |
break; |
case GL_READ_FRAMEBUFFER_EXT: |
- framebuffer = state_.bound_read_framebuffer.get(); |
+ framebuffer = framebuffer_state_.bound_read_framebuffer.get(); |
break; |
default: |
NOTREACHED(); |
@@ -1501,13 +1501,13 @@ class GLES2DecoderImpl : public GLES2Decoder { |
bool ShouldDeferDraws() { |
return !offscreen_target_frame_buffer_.get() && |
- state_.bound_draw_framebuffer.get() == NULL && |
+ framebuffer_state_.bound_draw_framebuffer.get() == NULL && |
surface_->DeferDraws(); |
} |
bool ShouldDeferReads() { |
return !offscreen_target_frame_buffer_.get() && |
- state_.bound_read_framebuffer.get() == NULL && |
+ framebuffer_state_.bound_read_framebuffer.get() == NULL && |
surface_->DeferDraws(); |
} |
@@ -1745,10 +1745,11 @@ ScopedFrameBufferBinder::~ScopedFrameBufferBinder() { |
ScopedResolvedFrameBufferBinder::ScopedResolvedFrameBufferBinder( |
GLES2DecoderImpl* decoder, bool enforce_internal_framebuffer, bool internal) |
: decoder_(decoder) { |
- resolve_and_bind_ = (decoder_->offscreen_target_frame_buffer_.get() && |
- decoder_->IsOffscreenBufferMultisampled() && |
- (!decoder_->state_.bound_read_framebuffer.get() || |
- enforce_internal_framebuffer)); |
+ resolve_and_bind_ = ( |
+ decoder_->offscreen_target_frame_buffer_.get() && |
+ decoder_->IsOffscreenBufferMultisampled() && |
+ (!decoder_->framebuffer_state_.bound_read_framebuffer.get() || |
+ enforce_internal_framebuffer)); |
if (!resolve_and_bind_) |
return; |
@@ -2636,15 +2637,15 @@ void GLES2DecoderImpl::DeleteFramebuffersHelper( |
Framebuffer* framebuffer = |
GetFramebuffer(client_ids[ii]); |
if (framebuffer && !framebuffer->IsDeleted()) { |
- if (framebuffer == state_.bound_draw_framebuffer.get()) { |
- state_.bound_draw_framebuffer = NULL; |
+ if (framebuffer == framebuffer_state_.bound_draw_framebuffer.get()) { |
+ framebuffer_state_.bound_draw_framebuffer = NULL; |
framebuffer_state_.clear_state_dirty = true; |
GLenum target = supports_separate_framebuffer_binds ? |
GL_DRAW_FRAMEBUFFER_EXT : GL_FRAMEBUFFER; |
glBindFramebufferEXT(target, GetBackbufferServiceId()); |
} |
- if (framebuffer == state_.bound_read_framebuffer.get()) { |
- state_.bound_read_framebuffer = NULL; |
+ if (framebuffer == framebuffer_state_.bound_read_framebuffer.get()) { |
+ framebuffer_state_.bound_read_framebuffer = NULL; |
GLenum target = supports_separate_framebuffer_binds ? |
GL_READ_FRAMEBUFFER_EXT : GL_FRAMEBUFFER; |
glBindFramebufferEXT(target, GetBackbufferServiceId()); |
@@ -2668,17 +2669,17 @@ void GLES2DecoderImpl::DeleteRenderbuffersHelper( |
} |
// Unbind from current framebuffers. |
if (supports_separate_framebuffer_binds) { |
- if (state_.bound_read_framebuffer.get()) { |
- state_.bound_read_framebuffer |
+ if (framebuffer_state_.bound_read_framebuffer.get()) { |
+ framebuffer_state_.bound_read_framebuffer |
->UnbindRenderbuffer(GL_READ_FRAMEBUFFER_EXT, renderbuffer); |
} |
- if (state_.bound_draw_framebuffer.get()) { |
- state_.bound_draw_framebuffer |
+ if (framebuffer_state_.bound_draw_framebuffer.get()) { |
+ framebuffer_state_.bound_draw_framebuffer |
->UnbindRenderbuffer(GL_DRAW_FRAMEBUFFER_EXT, renderbuffer); |
} |
} else { |
- if (state_.bound_draw_framebuffer.get()) { |
- state_.bound_draw_framebuffer |
+ if (framebuffer_state_.bound_draw_framebuffer.get()) { |
+ framebuffer_state_.bound_draw_framebuffer |
->UnbindRenderbuffer(GL_FRAMEBUFFER, renderbuffer); |
} |
} |
@@ -2705,17 +2706,17 @@ void GLES2DecoderImpl::DeleteTexturesHelper( |
} |
// Unbind from current framebuffers. |
if (supports_separate_framebuffer_binds) { |
- if (state_.bound_read_framebuffer.get()) { |
- state_.bound_read_framebuffer |
+ if (framebuffer_state_.bound_read_framebuffer.get()) { |
+ framebuffer_state_.bound_read_framebuffer |
->UnbindTexture(GL_READ_FRAMEBUFFER_EXT, texture_ref); |
} |
- if (state_.bound_draw_framebuffer.get()) { |
- state_.bound_draw_framebuffer |
+ if (framebuffer_state_.bound_draw_framebuffer.get()) { |
+ framebuffer_state_.bound_draw_framebuffer |
->UnbindTexture(GL_DRAW_FRAMEBUFFER_EXT, texture_ref); |
} |
} else { |
- if (state_.bound_draw_framebuffer.get()) { |
- state_.bound_draw_framebuffer |
+ if (framebuffer_state_.bound_draw_framebuffer.get()) { |
+ framebuffer_state_.bound_draw_framebuffer |
->UnbindTexture(GL_FRAMEBUFFER, texture_ref); |
} |
} |
@@ -2808,16 +2809,16 @@ void GLES2DecoderImpl::RestoreCurrentFramebufferBindings() { |
if (!features().chromium_framebuffer_multisample) { |
RebindCurrentFramebuffer( |
GL_FRAMEBUFFER, |
- state_.bound_draw_framebuffer.get(), |
+ framebuffer_state_.bound_draw_framebuffer.get(), |
GetBackbufferServiceId()); |
} else { |
RebindCurrentFramebuffer( |
GL_READ_FRAMEBUFFER_EXT, |
- state_.bound_read_framebuffer.get(), |
+ framebuffer_state_.bound_read_framebuffer.get(), |
GetBackbufferServiceId()); |
RebindCurrentFramebuffer( |
GL_DRAW_FRAMEBUFFER_EXT, |
- state_.bound_draw_framebuffer.get(), |
+ framebuffer_state_.bound_draw_framebuffer.get(), |
GetBackbufferServiceId()); |
} |
OnFboChanged(); |
@@ -2902,17 +2903,18 @@ bool GLES2DecoderImpl::CheckFramebufferValid( |
bool GLES2DecoderImpl::CheckBoundFramebuffersValid(const char* func_name) { |
if (!features().chromium_framebuffer_multisample) { |
bool valid = CheckFramebufferValid( |
- state_.bound_draw_framebuffer.get(), GL_FRAMEBUFFER_EXT, func_name); |
+ framebuffer_state_.bound_draw_framebuffer.get(), GL_FRAMEBUFFER_EXT, |
+ func_name); |
if (valid) |
OnUseFramebuffer(); |
return valid; |
} |
- return CheckFramebufferValid(state_.bound_draw_framebuffer.get(), |
+ return CheckFramebufferValid(framebuffer_state_.bound_draw_framebuffer.get(), |
GL_DRAW_FRAMEBUFFER_EXT, |
func_name) && |
- CheckFramebufferValid(state_.bound_read_framebuffer.get(), |
+ CheckFramebufferValid(framebuffer_state_.bound_read_framebuffer.get(), |
GL_READ_FRAMEBUFFER_EXT, |
func_name); |
} |
@@ -3081,8 +3083,8 @@ void GLES2DecoderImpl::Destroy(bool have_context) { |
state_.texture_units.clear(); |
state_.bound_array_buffer = NULL; |
state_.current_query = NULL; |
- state_.bound_read_framebuffer = NULL; |
- state_.bound_draw_framebuffer = NULL; |
+ framebuffer_state_.bound_read_framebuffer = NULL; |
+ framebuffer_state_.bound_draw_framebuffer = NULL; |
state_.bound_renderbuffer = NULL; |
if (offscreen_saved_color_texture_info_.get()) { |
@@ -3648,15 +3650,16 @@ void GLES2DecoderImpl::RestoreState() const { |
} |
void GLES2DecoderImpl::RestoreFramebufferBindings() const { |
- GLuint service_id = state_.bound_draw_framebuffer.get() |
- ? state_.bound_draw_framebuffer->service_id() |
- : GetBackbufferServiceId(); |
+ GLuint service_id = |
+ framebuffer_state_.bound_draw_framebuffer.get() |
+ ? framebuffer_state_.bound_draw_framebuffer->service_id() |
+ : GetBackbufferServiceId(); |
if (!features().chromium_framebuffer_multisample) { |
glBindFramebufferEXT(GL_FRAMEBUFFER, service_id); |
} else { |
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, service_id); |
- service_id = state_.bound_read_framebuffer.get() |
- ? state_.bound_read_framebuffer->service_id() |
+ service_id = framebuffer_state_.bound_read_framebuffer.get() |
+ ? framebuffer_state_.bound_read_framebuffer->service_id() |
: GetBackbufferServiceId(); |
glBindFramebufferEXT(GL_READ_FRAMEBUFFER, service_id); |
} |
@@ -3729,10 +3732,10 @@ void GLES2DecoderImpl::DoBindFramebuffer(GLenum target, GLuint client_id) { |
LogClientServiceForInfo(framebuffer, client_id, "glBindFramebuffer"); |
if (target == GL_FRAMEBUFFER || target == GL_DRAW_FRAMEBUFFER_EXT) { |
- state_.bound_draw_framebuffer = framebuffer; |
+ framebuffer_state_.bound_draw_framebuffer = framebuffer; |
} |
if (target == GL_FRAMEBUFFER || target == GL_READ_FRAMEBUFFER_EXT) { |
- state_.bound_read_framebuffer = framebuffer; |
+ framebuffer_state_.bound_read_framebuffer = framebuffer; |
} |
framebuffer_state_.clear_state_dirty = true; |
@@ -4714,7 +4717,7 @@ void GLES2DecoderImpl::DoFramebufferRenderbuffer( |
if (error == GL_NO_ERROR) { |
framebuffer->AttachRenderbuffer(attachment, renderbuffer); |
} |
- if (framebuffer == state_.bound_draw_framebuffer.get()) { |
+ if (framebuffer == framebuffer_state_.bound_draw_framebuffer.get()) { |
framebuffer_state_.clear_state_dirty = true; |
} |
OnFboChanged(); |
@@ -4898,7 +4901,7 @@ void GLES2DecoderImpl::DoFramebufferTexture2DCommon( |
framebuffer->AttachTexture(attachment, texture_ref, textarget, level, |
samples); |
} |
- if (framebuffer == state_.bound_draw_framebuffer.get()) { |
+ if (framebuffer == framebuffer_state_.bound_draw_framebuffer.get()) { |
framebuffer_state_.clear_state_dirty = true; |
} |
OnFboChanged(); |