Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: gpu/command_buffer/service/framebuffer_manager.cc

Issue 2161383002: Add check if depth and stencil attachments are same image (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add check if depth and stencil attachments are the same image when both attachments are present Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « AUTHORS ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/framebuffer_manager.h" 5 #include "gpu/command_buffer/service/framebuffer_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 // GL implementation uses, but we always return INCOMPLETE_MULTISAMPLE 670 // GL implementation uses, but we always return INCOMPLETE_MULTISAMPLE
671 // here to ensure consistent behaviors across platforms. 671 // here to ensure consistent behaviors across platforms.
672 return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE; 672 return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE;
673 } 673 }
674 } 674 }
675 if (!attachment->CanRenderTo(feature_info)) { 675 if (!attachment->CanRenderTo(feature_info)) {
676 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; 676 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
677 } 677 }
678 } 678 }
679 679
680 // WebGL2 and GLES3 don't allow different images to bind to the depth and
681 // stencil attachment points, or GL_FRAMEBUFFER_UNSUPPORTED is returned.
682 if (feature_info->context_type() == CONTEXT_TYPE_WEBGL2 ||
683 feature_info->context_type() == CONTEXT_TYPE_OPENGLES3) {
Zhenyao Mo 2016/07/20 13:46:07 We probably want to enforce this for all context t
684 AttachmentMap::const_iterator depth_it =
685 attachments_.find(GL_DEPTH_ATTACHMENT);
686 if (depth_it != attachments_.end()) {
687 AttachmentMap::const_iterator stencil_it =
688 attachments_.find(GL_STENCIL_ATTACHMENT);
689 if (stencil_it != attachments_.end()) {
690 if ((depth_it->second.get()->IsTextureAttachment() !=
Zhenyao Mo 2016/07/20 13:46:07 This is incorrect. First, you also need to consid
691 stencil_it->second.get()->IsTextureAttachment()) ||
692 (depth_it->second.get()->object_name() !=
693 stencil_it->second.get()->object_name())) {
694 return GL_FRAMEBUFFER_UNSUPPORTED;
695 }
696 }
697 }
698 }
680 // This does not mean the framebuffer is actually complete. It just means our 699 // This does not mean the framebuffer is actually complete. It just means our
681 // checks passed. 700 // checks passed.
682 return GL_FRAMEBUFFER_COMPLETE; 701 return GL_FRAMEBUFFER_COMPLETE;
683 } 702 }
684 703
685 GLenum Framebuffer::GetStatus( 704 GLenum Framebuffer::GetStatus(
686 TextureManager* texture_manager, GLenum target) const { 705 TextureManager* texture_manager, GLenum target) const {
687 if (!manager_->GetFramebufferComboCompleteCache()) { 706 if (!manager_->GetFramebufferComboCompleteCache()) {
688 return glCheckFramebufferStatusEXT(target); 707 return glCheckFramebufferStatusEXT(target);
689 } 708 }
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 953
935 bool FramebufferManager::IsComplete( 954 bool FramebufferManager::IsComplete(
936 Framebuffer* framebuffer) { 955 Framebuffer* framebuffer) {
937 DCHECK(framebuffer); 956 DCHECK(framebuffer);
938 return framebuffer->framebuffer_complete_state_count_id() == 957 return framebuffer->framebuffer_complete_state_count_id() ==
939 framebuffer_state_change_count_; 958 framebuffer_state_change_count_;
940 } 959 }
941 960
942 } // namespace gles2 961 } // namespace gles2
943 } // namespace gpu 962 } // namespace gpu
OLDNEW
« no previous file with comments | « AUTHORS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698