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

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

Issue 2120343002: command_buffer: correctly use glGetFramebufferAttachmentParameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 | « gpu/command_buffer/service/framebuffer_manager.cc ('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/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 6049 matching lines...) Expand 10 before | Expand all | Expand 10 after
6060 case GL_ALPHA_BITS: 6060 case GL_ALPHA_BITS:
6061 *num_written = 1; 6061 *num_written = 1;
6062 if (params) { 6062 if (params) {
6063 GLint v = 0; 6063 GLint v = 0;
6064 Framebuffer* framebuffer = 6064 Framebuffer* framebuffer =
6065 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6065 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6066 if (framebuffer) { 6066 if (framebuffer) {
6067 if (framebuffer->HasAlphaMRT() && 6067 if (framebuffer->HasAlphaMRT() &&
6068 framebuffer->HasSameInternalFormatsMRT()) { 6068 framebuffer->HasSameInternalFormatsMRT()) {
6069 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6069 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6070 glGetFramebufferAttachmentParameterivEXT( 6070 if (framebuffer->HasColorAttachment(0)) {
Zhenyao Mo 2016/07/04 23:16:06 Here we have a pre-existing issue: we should query
6071 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 6071 glGetFramebufferAttachmentParameterivEXT(
6072 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v); 6072 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
6073 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v);
6074 }
6073 } else { 6075 } else {
6074 glGetIntegerv(GL_ALPHA_BITS, &v); 6076 glGetIntegerv(GL_ALPHA_BITS, &v);
6075 } 6077 }
6076 } 6078 }
6077 } else { 6079 } else {
6078 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0); 6080 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0);
6079 } 6081 }
6080 params[0] = v; 6082 params[0] = v;
6081 } 6083 }
6082 return true; 6084 return true;
6083 case GL_DEPTH_BITS: 6085 case GL_DEPTH_BITS:
6084 *num_written = 1; 6086 *num_written = 1;
6085 if (params) { 6087 if (params) {
6086 GLint v = 0; 6088 GLint v = 0;
6087 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6089 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6088 Framebuffer* framebuffer = 6090 Framebuffer* framebuffer =
6089 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6091 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6090 if (framebuffer) { 6092 if (framebuffer && framebuffer->HasDepthAttachment()) {
Zhenyao Mo 2016/07/04 23:16:06 This should be an inter if statement. Because if
6091 glGetFramebufferAttachmentParameterivEXT( 6093 glGetFramebufferAttachmentParameterivEXT(
6092 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 6094 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
6093 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v); 6095 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v);
6094 } else { 6096 } else {
6095 v = (back_buffer_has_depth_ ? 24 : 0); 6097 v = (back_buffer_has_depth_ ? 24 : 0);
6096 } 6098 }
6097 } else { 6099 } else {
6098 glGetIntegerv(GL_DEPTH_BITS, &v); 6100 glGetIntegerv(GL_DEPTH_BITS, &v);
6099 } 6101 }
6100 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0; 6102 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0;
6101 } 6103 }
6102 return true; 6104 return true;
6103 case GL_RED_BITS: 6105 case GL_RED_BITS:
6104 case GL_GREEN_BITS: 6106 case GL_GREEN_BITS:
6105 case GL_BLUE_BITS: 6107 case GL_BLUE_BITS:
6106 *num_written = 1; 6108 *num_written = 1;
6107 if (params) { 6109 if (params) {
6108 GLint v = 0; 6110 GLint v = 0;
6109 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6111 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6110 Framebuffer* framebuffer = 6112 Framebuffer* framebuffer =
6111 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6113 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6112 if (framebuffer) { 6114 if (framebuffer && framebuffer->HasColorAttachment(0)) {
Zhenyao Mo 2016/07/04 23:16:06 Here we should do similar things as GL_ALPHA_BITS,
6113 GLenum framebuffer_enum = 0; 6115 GLenum framebuffer_enum = 0;
6114 switch (pname) { 6116 switch (pname) {
6115 case GL_RED_BITS: 6117 case GL_RED_BITS:
6116 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE; 6118 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE;
6117 break; 6119 break;
6118 case GL_GREEN_BITS: 6120 case GL_GREEN_BITS:
6119 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE; 6121 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
6120 break; 6122 break;
6121 case GL_BLUE_BITS: 6123 case GL_BLUE_BITS:
6122 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE; 6124 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
(...skipping 10 matching lines...) Expand all
6133 params[0] = v; 6135 params[0] = v;
6134 } 6136 }
6135 return true; 6137 return true;
6136 case GL_STENCIL_BITS: 6138 case GL_STENCIL_BITS:
6137 *num_written = 1; 6139 *num_written = 1;
6138 if (params) { 6140 if (params) {
6139 GLint v = 0; 6141 GLint v = 0;
6140 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6142 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6141 Framebuffer* framebuffer = 6143 Framebuffer* framebuffer =
6142 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6144 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6143 if (framebuffer) { 6145 if (framebuffer && framebuffer->HasStencilAttachment()) {
Zhenyao Mo 2016/07/04 23:16:06 Same here, should be an inner if statement.
6144 glGetFramebufferAttachmentParameterivEXT( 6146 glGetFramebufferAttachmentParameterivEXT(
6145 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, 6147 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
6146 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v); 6148 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v);
6147 } else { 6149 } else {
6148 v = (back_buffer_has_stencil_ ? 8 : 0); 6150 v = (back_buffer_has_stencil_ ? 8 : 0);
6149 } 6151 }
6150 } else { 6152 } else {
6151 glGetIntegerv(GL_STENCIL_BITS, &v); 6153 glGetIntegerv(GL_STENCIL_BITS, &v);
6152 } 6154 }
6153 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0; 6155 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0;
(...skipping 10926 matching lines...) Expand 10 before | Expand all | Expand 10 after
17080 } 17082 }
17081 17083
17082 // Include the auto-generated part of this file. We split this because it means 17084 // Include the auto-generated part of this file. We split this because it means
17083 // we can easily edit the non-auto generated parts right here in this file 17085 // we can easily edit the non-auto generated parts right here in this file
17084 // instead of having to edit some template or the code generator. 17086 // instead of having to edit some template or the code generator.
17085 #include "base/macros.h" 17087 #include "base/macros.h"
17086 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 17088 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
17087 17089
17088 } // namespace gles2 17090 } // namespace gles2
17089 } // namespace gpu 17091 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/framebuffer_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698