| 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 5067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5078 } | 5078 } |
| 5079 GLbitfield clear_bits = 0; | 5079 GLbitfield clear_bits = 0; |
| 5080 if (framebuffer->HasUnclearedColorAttachments()) { | 5080 if (framebuffer->HasUnclearedColorAttachments()) { |
| 5081 glClearColor( | 5081 glClearColor( |
| 5082 0.0f, 0.0f, 0.0f, | 5082 0.0f, 0.0f, 0.0f, |
| 5083 (GLES2Util::GetChannelsForFormat( | 5083 (GLES2Util::GetChannelsForFormat( |
| 5084 framebuffer->GetColorAttachmentFormat()) & 0x0008) != 0 ? 0.0f : | 5084 framebuffer->GetColorAttachmentFormat()) & 0x0008) != 0 ? 0.0f : |
| 5085 1.0f); | 5085 1.0f); |
| 5086 state_.SetDeviceColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); | 5086 state_.SetDeviceColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); |
| 5087 clear_bits |= GL_COLOR_BUFFER_BIT; | 5087 clear_bits |= GL_COLOR_BUFFER_BIT; |
| 5088 framebuffer->PrepareDrawBuffersForClear(); | 5088 if (feature_info_->feature_flags().ext_draw_buffers) |
| 5089 framebuffer->PrepareDrawBuffersForClear(); |
| 5089 } | 5090 } |
| 5090 | 5091 |
| 5091 if (framebuffer->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT) || | 5092 if (framebuffer->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT) || |
| 5092 framebuffer->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)) { | 5093 framebuffer->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)) { |
| 5093 glClearStencil(0); | 5094 glClearStencil(0); |
| 5094 state_.SetDeviceStencilMaskSeparate(GL_FRONT, kDefaultStencilMask); | 5095 state_.SetDeviceStencilMaskSeparate(GL_FRONT, kDefaultStencilMask); |
| 5095 state_.SetDeviceStencilMaskSeparate(GL_BACK, kDefaultStencilMask); | 5096 state_.SetDeviceStencilMaskSeparate(GL_BACK, kDefaultStencilMask); |
| 5096 clear_bits |= GL_STENCIL_BUFFER_BIT; | 5097 clear_bits |= GL_STENCIL_BUFFER_BIT; |
| 5097 } | 5098 } |
| 5098 | 5099 |
| 5099 if (framebuffer->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT) || | 5100 if (framebuffer->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT) || |
| 5100 framebuffer->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)) { | 5101 framebuffer->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)) { |
| 5101 glClearDepth(1.0f); | 5102 glClearDepth(1.0f); |
| 5102 state_.SetDeviceDepthMask(GL_TRUE); | 5103 state_.SetDeviceDepthMask(GL_TRUE); |
| 5103 clear_bits |= GL_DEPTH_BUFFER_BIT; | 5104 clear_bits |= GL_DEPTH_BUFFER_BIT; |
| 5104 } | 5105 } |
| 5105 | 5106 |
| 5106 state_.SetDeviceCapabilityState(GL_SCISSOR_TEST, false); | 5107 state_.SetDeviceCapabilityState(GL_SCISSOR_TEST, false); |
| 5107 glClear(clear_bits); | 5108 glClear(clear_bits); |
| 5108 | 5109 |
| 5109 if ((clear_bits | GL_COLOR_BUFFER_BIT) != 0) | 5110 if ((clear_bits | GL_COLOR_BUFFER_BIT) != 0 && |
| 5111 feature_info_->feature_flags().ext_draw_buffers) |
| 5110 framebuffer->RestoreDrawBuffersAfterClear(); | 5112 framebuffer->RestoreDrawBuffersAfterClear(); |
| 5111 | 5113 |
| 5112 framebuffer_manager()->MarkAttachmentsAsCleared( | 5114 framebuffer_manager()->MarkAttachmentsAsCleared( |
| 5113 framebuffer, renderbuffer_manager(), texture_manager()); | 5115 framebuffer, renderbuffer_manager(), texture_manager()); |
| 5114 | 5116 |
| 5115 RestoreClearState(); | 5117 RestoreClearState(); |
| 5116 | 5118 |
| 5117 if (target == GL_READ_FRAMEBUFFER_EXT) { | 5119 if (target == GL_READ_FRAMEBUFFER_EXT) { |
| 5118 glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, framebuffer->service_id()); | 5120 glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, framebuffer->service_id()); |
| 5119 Framebuffer* draw_framebuffer = | 5121 Framebuffer* draw_framebuffer = |
| (...skipping 5809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10929 } | 10931 } |
| 10930 } | 10932 } |
| 10931 | 10933 |
| 10932 // Include the auto-generated part of this file. We split this because it means | 10934 // Include the auto-generated part of this file. We split this because it means |
| 10933 // we can easily edit the non-auto generated parts right here in this file | 10935 // we can easily edit the non-auto generated parts right here in this file |
| 10934 // instead of having to edit some template or the code generator. | 10936 // instead of having to edit some template or the code generator. |
| 10935 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10937 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 10936 | 10938 |
| 10937 } // namespace gles2 | 10939 } // namespace gles2 |
| 10938 } // namespace gpu | 10940 } // namespace gpu |
| OLD | NEW |