Chromium Code Reviews| 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 0bcdbd4a006d35702d96d3a24c7d114161ae144d..6cf750299360a86117417d60cd3034405c6964a0 100644 |
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| @@ -5687,8 +5687,7 @@ void GLES2DecoderImpl::InvalidateFramebufferImpl( |
| // Because of performance issues, no-op if the format of the attachment is |
| // DEPTH_STENCIL and only one part is intended to be invalidated. |
| bool has_depth_stencil_format = framebuffer && |
| - framebuffer->HasDepthStencilFormatAttachment(GL_DEPTH_ATTACHMENT) && |
| - framebuffer->HasDepthStencilFormatAttachment(GL_STENCIL_ATTACHMENT); |
| + framebuffer->HasDepthStencilFormatAttachment(); |
| bool invalidate_depth = false; |
| bool invalidate_stencil = false; |
| std::unique_ptr<GLenum[]> validated_attachments(new GLenum[count]); |
| @@ -5717,6 +5716,10 @@ void GLES2DecoderImpl::InvalidateFramebufferImpl( |
| case GL_STENCIL_ATTACHMENT: |
| invalidate_stencil = true; |
| continue; |
| + case GL_DEPTH_STENCIL_ATTACHMENT: |
| + invalidate_depth = true; |
| + invalidate_stencil = true; |
| + continue; |
| } |
| } |
| } else { |
| @@ -5792,6 +5795,9 @@ void GLES2DecoderImpl::InvalidateFramebufferImpl( |
| for (GLsizei i = 0; i < validated_count; ++i) { |
| if (framebuffer) { |
| if (validated_attachments[i] == GL_DEPTH_STENCIL_ATTACHMENT) { |
| + // TODO(qiankun.miao@intel.com): We should only make DEPTH and STENCIL |
|
Ken Russell (switch to Gerrit)
2016/07/22 18:24:31
Typo? make -> mark?
qiankun
2016/07/22 19:15:06
Done.
|
| + // attachments as cleared when command buffer handles DEPTH_STENCIL |
| + // well. http://crbug.com/630568 |
| framebuffer->MarkAttachmentAsCleared(renderbuffer_manager(), |
| texture_manager(), |
| GL_DEPTH_ATTACHMENT, |
| @@ -5800,6 +5806,10 @@ void GLES2DecoderImpl::InvalidateFramebufferImpl( |
| texture_manager(), |
| GL_STENCIL_ATTACHMENT, |
| false); |
| + framebuffer->MarkAttachmentAsCleared(renderbuffer_manager(), |
| + texture_manager(), |
| + GL_DEPTH_STENCIL_ATTACHMENT, |
| + false); |
| } else { |
| framebuffer->MarkAttachmentAsCleared(renderbuffer_manager(), |
| texture_manager(), |