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

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: Address comments 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 for (uint32_t i = 0; i < group_->max_draw_buffers(); i++) {
6071 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 6071 if (framebuffer->HasColorAttachment(i)) {
6072 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v); 6072 glGetFramebufferAttachmentParameterivEXT(
6073 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
6074 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v);
6075 break;
6076 }
6077 }
6073 } else { 6078 } else {
6074 glGetIntegerv(GL_ALPHA_BITS, &v); 6079 glGetIntegerv(GL_ALPHA_BITS, &v);
6075 } 6080 }
6076 } 6081 }
6077 } else { 6082 } else {
6078 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0); 6083 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0);
6079 } 6084 }
6080 params[0] = v; 6085 params[0] = v;
6081 } 6086 }
6082 return true; 6087 return true;
6083 case GL_DEPTH_BITS: 6088 case GL_DEPTH_BITS:
6084 *num_written = 1; 6089 *num_written = 1;
6085 if (params) { 6090 if (params) {
6086 GLint v = 0; 6091 GLint v = 0;
6087 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6092 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6088 Framebuffer* framebuffer = 6093 Framebuffer* framebuffer =
6089 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6094 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6090 if (framebuffer) { 6095 if (framebuffer && framebuffer->HasDepthAttachment()) {
Zhenyao Mo 2016/07/05 21:14:16 Remove it here? Since you moved it inside.
6091 glGetFramebufferAttachmentParameterivEXT( 6096 if (framebuffer->HasDepthAttachment()) {
6092 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 6097 glGetFramebufferAttachmentParameterivEXT(
6093 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v); 6098 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
6099 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v);
6100 }
6094 } else { 6101 } else {
6095 v = (back_buffer_has_depth_ ? 24 : 0); 6102 v = (back_buffer_has_depth_ ? 24 : 0);
6096 } 6103 }
6097 } else { 6104 } else {
6098 glGetIntegerv(GL_DEPTH_BITS, &v); 6105 glGetIntegerv(GL_DEPTH_BITS, &v);
6099 } 6106 }
6100 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0; 6107 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0;
6101 } 6108 }
6102 return true; 6109 return true;
6103 case GL_RED_BITS: 6110 case GL_RED_BITS:
6104 case GL_GREEN_BITS: 6111 case GL_GREEN_BITS:
6105 case GL_BLUE_BITS: 6112 case GL_BLUE_BITS:
6106 *num_written = 1; 6113 *num_written = 1;
6107 if (params) { 6114 if (params) {
6108 GLint v = 0; 6115 GLint v = 0;
6109 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6116 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6110 Framebuffer* framebuffer = 6117 Framebuffer* framebuffer =
6111 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6118 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6112 if (framebuffer) { 6119 if (framebuffer) {
6113 GLenum framebuffer_enum = 0; 6120 if (framebuffer->HasSameInternalFormatsMRT()) {
6114 switch (pname) { 6121 GLenum framebuffer_enum = 0;
6115 case GL_RED_BITS: 6122 switch (pname) {
6116 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE; 6123 case GL_RED_BITS:
6117 break; 6124 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE;
6118 case GL_GREEN_BITS: 6125 break;
6119 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE; 6126 case GL_GREEN_BITS:
6120 break; 6127 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
6121 case GL_BLUE_BITS: 6128 break;
6122 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE; 6129 case GL_BLUE_BITS:
6123 break; 6130 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
6131 break;
6132 }
6133 for (uint32_t i = 0; i < group_->max_draw_buffers(); i++) {
6134 if (framebuffer->HasColorAttachment(i)) {
6135 glGetFramebufferAttachmentParameterivEXT(
6136 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
6137 framebuffer_enum, &v);
6138 break;
6139 }
6140 }
6124 } 6141 }
6125 glGetFramebufferAttachmentParameterivEXT(
6126 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, framebuffer_enum, &v);
6127 } else { 6142 } else {
6128 v = 8; 6143 v = 8;
6129 } 6144 }
6130 } else { 6145 } else {
6131 glGetIntegerv(pname, &v); 6146 glGetIntegerv(pname, &v);
6132 } 6147 }
6133 params[0] = v; 6148 params[0] = v;
6134 } 6149 }
6135 return true; 6150 return true;
6136 case GL_STENCIL_BITS: 6151 case GL_STENCIL_BITS:
6137 *num_written = 1; 6152 *num_written = 1;
6138 if (params) { 6153 if (params) {
6139 GLint v = 0; 6154 GLint v = 0;
6140 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6155 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6141 Framebuffer* framebuffer = 6156 Framebuffer* framebuffer =
6142 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6157 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6143 if (framebuffer) { 6158 if (framebuffer) {
6144 glGetFramebufferAttachmentParameterivEXT( 6159 if (framebuffer->HasStencilAttachment()) {
6145 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, 6160 glGetFramebufferAttachmentParameterivEXT(
6146 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v); 6161 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
6162 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v);
6163 }
6147 } else { 6164 } else {
6148 v = (back_buffer_has_stencil_ ? 8 : 0); 6165 v = (back_buffer_has_stencil_ ? 8 : 0);
6149 } 6166 }
6150 } else { 6167 } else {
6151 glGetIntegerv(GL_STENCIL_BITS, &v); 6168 glGetIntegerv(GL_STENCIL_BITS, &v);
6152 } 6169 }
6153 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0; 6170 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0;
6154 } 6171 }
6155 return true; 6172 return true;
6156 case GL_COMPRESSED_TEXTURE_FORMATS: 6173 case GL_COMPRESSED_TEXTURE_FORMATS:
(...skipping 10923 matching lines...) Expand 10 before | Expand all | Expand 10 after
17080 } 17097 }
17081 17098
17082 // Include the auto-generated part of this file. We split this because it means 17099 // 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 17100 // 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. 17101 // instead of having to edit some template or the code generator.
17085 #include "base/macros.h" 17102 #include "base/macros.h"
17086 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 17103 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
17087 17104
17088 } // namespace gles2 17105 } // namespace gles2
17089 } // namespace gpu 17106 } // 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