Chromium Code Reviews| 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 <limits.h> | 7 #include <limits.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| (...skipping 6963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6974 glFramebufferRenderbufferEXT( | 6974 glFramebufferRenderbufferEXT( |
| 6975 target, GL_DEPTH_ATTACHMENT, renderbuffertarget, service_id); | 6975 target, GL_DEPTH_ATTACHMENT, renderbuffertarget, service_id); |
| 6976 glFramebufferRenderbufferEXT( | 6976 glFramebufferRenderbufferEXT( |
| 6977 target, GL_STENCIL_ATTACHMENT, renderbuffertarget, service_id); | 6977 target, GL_STENCIL_ATTACHMENT, renderbuffertarget, service_id); |
| 6978 } else { | 6978 } else { |
| 6979 glFramebufferRenderbufferEXT( | 6979 glFramebufferRenderbufferEXT( |
| 6980 target, attachment, renderbuffertarget, service_id); | 6980 target, attachment, renderbuffertarget, service_id); |
| 6981 } | 6981 } |
| 6982 GLenum error = LOCAL_PEEK_GL_ERROR("glFramebufferRenderbuffer"); | 6982 GLenum error = LOCAL_PEEK_GL_ERROR("glFramebufferRenderbuffer"); |
| 6983 if (error == GL_NO_ERROR) { | 6983 if (error == GL_NO_ERROR) { |
| 6984 framebuffer->AttachRenderbuffer(attachment, renderbuffer); | 6984 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { |
| 6985 framebuffer->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer); | |
| 6986 framebuffer->AttachRenderbuffer(GL_STENCIL_ATTACHMENT, renderbuffer); | |
| 6987 } else { | |
| 6988 framebuffer->AttachRenderbuffer(attachment, renderbuffer); | |
| 6989 } | |
| 6985 } | 6990 } |
| 6986 if (framebuffer == framebuffer_state_.bound_draw_framebuffer.get()) { | 6991 if (framebuffer == framebuffer_state_.bound_draw_framebuffer.get()) { |
| 6987 framebuffer_state_.clear_state_dirty = true; | 6992 framebuffer_state_.clear_state_dirty = true; |
| 6988 } | 6993 } |
| 6989 OnFboChanged(); | 6994 OnFboChanged(); |
| 6990 } | 6995 } |
| 6991 | 6996 |
| 6992 void GLES2DecoderImpl::DoDisable(GLenum cap) { | 6997 void GLES2DecoderImpl::DoDisable(GLenum cap) { |
| 6993 if (SetCapabilityState(cap, false)) { | 6998 if (SetCapabilityState(cap, false)) { |
| 6994 if (cap == GL_PRIMITIVE_RESTART_FIXED_INDEX && | 6999 if (cap == GL_PRIMITIVE_RESTART_FIXED_INDEX && |
| (...skipping 4200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11195 GL_FRAMEBUFFER_COMPLETE) { | 11200 GL_FRAMEBUFFER_COMPLETE) { |
| 11196 return false; | 11201 return false; |
| 11197 } | 11202 } |
| 11198 glClearStencil(0); | 11203 glClearStencil(0); |
| 11199 state_.SetDeviceStencilMaskSeparate(GL_FRONT, kDefaultStencilMask); | 11204 state_.SetDeviceStencilMaskSeparate(GL_FRONT, kDefaultStencilMask); |
| 11200 state_.SetDeviceStencilMaskSeparate(GL_BACK, kDefaultStencilMask); | 11205 state_.SetDeviceStencilMaskSeparate(GL_BACK, kDefaultStencilMask); |
| 11201 glClearDepth(1.0f); | 11206 glClearDepth(1.0f); |
| 11202 state_.SetDeviceDepthMask(GL_TRUE); | 11207 state_.SetDeviceDepthMask(GL_TRUE); |
| 11203 state_.SetDeviceCapabilityState(GL_SCISSOR_TEST, true); | 11208 state_.SetDeviceCapabilityState(GL_SCISSOR_TEST, true); |
| 11204 glScissor(xoffset, yoffset, width, height); | 11209 glScissor(xoffset, yoffset, width, height); |
| 11205 glClear(GL_DEPTH_BUFFER_BIT | (have_stencil ? GL_STENCIL_BUFFER_BIT : 0)); | 11210 if (format != GL_DEPTH_STENCIL) { |
| 11206 | 11211 glClear(GL_DEPTH_BUFFER_BIT | (have_stencil ? GL_STENCIL_BUFFER_BIT : 0)); |
| 11212 } else { | |
| 11213 // When format is DEPTH_STENCIL, only clear the uncleared part. | |
| 11214 GLbitfield clear_bits = 0; | |
| 11215 if (!texture->IsLevelCleared(target, level, GL_DEPTH_ATTACHMENT)) | |
| 11216 clear_bits |= GL_DEPTH_BUFFER_BIT; | |
| 11217 if (have_stencil && !texture->IsLevelCleared(target, level, | |
|
qiankun
2016/07/14 06:48:21
new line after &&
| |
| 11218 GL_STENCIL_ATTACHMENT)) | |
| 11219 clear_bits |= GL_STENCIL_BUFFER_BIT; | |
| 11220 glClear(clear_bits); | |
| 11221 } | |
| 11207 RestoreClearState(); | 11222 RestoreClearState(); |
| 11208 | 11223 |
| 11209 glDeleteFramebuffersEXT(1, &fb); | 11224 glDeleteFramebuffersEXT(1, &fb); |
| 11210 Framebuffer* framebuffer = | 11225 Framebuffer* framebuffer = |
| 11211 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); | 11226 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); |
| 11212 GLuint fb_service_id = | 11227 GLuint fb_service_id = |
| 11213 framebuffer ? framebuffer->service_id() : GetBackbufferServiceId(); | 11228 framebuffer ? framebuffer->service_id() : GetBackbufferServiceId(); |
| 11214 glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, fb_service_id); | 11229 glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, fb_service_id); |
| 11215 return true; | 11230 return true; |
| 11216 } | 11231 } |
| (...skipping 5889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 17106 } | 17121 } |
| 17107 | 17122 |
| 17108 // Include the auto-generated part of this file. We split this because it means | 17123 // Include the auto-generated part of this file. We split this because it means |
| 17109 // we can easily edit the non-auto generated parts right here in this file | 17124 // we can easily edit the non-auto generated parts right here in this file |
| 17110 // instead of having to edit some template or the code generator. | 17125 // instead of having to edit some template or the code generator. |
| 17111 #include "base/macros.h" | 17126 #include "base/macros.h" |
| 17112 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 17127 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
| 17113 | 17128 |
| 17114 } // namespace gles2 | 17129 } // namespace gles2 |
| 17115 } // namespace gpu | 17130 } // namespace gpu |
| OLD | NEW |