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

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 last comment? 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 6037 matching lines...) Expand 10 before | Expand all | Expand 10 after
6048 case GL_ALPHA_BITS: 6048 case GL_ALPHA_BITS:
6049 *num_written = 1; 6049 *num_written = 1;
6050 if (params) { 6050 if (params) {
6051 GLint v = 0; 6051 GLint v = 0;
6052 Framebuffer* framebuffer = 6052 Framebuffer* framebuffer =
6053 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6053 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6054 if (framebuffer) { 6054 if (framebuffer) {
6055 if (framebuffer->HasAlphaMRT() && 6055 if (framebuffer->HasAlphaMRT() &&
6056 framebuffer->HasSameInternalFormatsMRT()) { 6056 framebuffer->HasSameInternalFormatsMRT()) {
6057 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6057 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6058 glGetFramebufferAttachmentParameterivEXT( 6058 for (uint32_t i = 0; i < group_->max_draw_buffers(); i++) {
6059 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 6059 if (framebuffer->HasColorAttachment(i)) {
6060 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v); 6060 glGetFramebufferAttachmentParameterivEXT(
6061 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
6062 GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, &v);
6063 break;
6064 }
6065 }
6061 } else { 6066 } else {
6062 glGetIntegerv(GL_ALPHA_BITS, &v); 6067 glGetIntegerv(GL_ALPHA_BITS, &v);
6063 } 6068 }
6064 } 6069 }
6065 } else { 6070 } else {
6066 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0); 6071 v = (ClientExposedBackBufferHasAlpha() ? 8 : 0);
6067 } 6072 }
6068 params[0] = v; 6073 params[0] = v;
6069 } 6074 }
6070 return true; 6075 return true;
6071 case GL_DEPTH_BITS: 6076 case GL_DEPTH_BITS:
6072 *num_written = 1; 6077 *num_written = 1;
6073 if (params) { 6078 if (params) {
6074 GLint v = 0; 6079 GLint v = 0;
6075 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6080 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6076 Framebuffer* framebuffer = 6081 Framebuffer* framebuffer =
6077 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6082 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6078 if (framebuffer) { 6083 if (framebuffer) {
6079 glGetFramebufferAttachmentParameterivEXT( 6084 if (framebuffer->HasDepthAttachment()) {
6080 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 6085 glGetFramebufferAttachmentParameterivEXT(
6081 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v); 6086 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
6087 GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, &v);
6088 }
6082 } else { 6089 } else {
6083 v = (back_buffer_has_depth_ ? 24 : 0); 6090 v = (back_buffer_has_depth_ ? 24 : 0);
6084 } 6091 }
6085 } else { 6092 } else {
6086 glGetIntegerv(GL_DEPTH_BITS, &v); 6093 glGetIntegerv(GL_DEPTH_BITS, &v);
6087 } 6094 }
6088 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0; 6095 params[0] = BoundFramebufferHasDepthAttachment() ? v : 0;
6089 } 6096 }
6090 return true; 6097 return true;
6091 case GL_RED_BITS: 6098 case GL_RED_BITS:
6092 case GL_GREEN_BITS: 6099 case GL_GREEN_BITS:
6093 case GL_BLUE_BITS: 6100 case GL_BLUE_BITS:
6094 *num_written = 1; 6101 *num_written = 1;
6095 if (params) { 6102 if (params) {
6096 GLint v = 0; 6103 GLint v = 0;
6097 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6104 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6098 Framebuffer* framebuffer = 6105 Framebuffer* framebuffer =
6099 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6106 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6100 if (framebuffer) { 6107 if (framebuffer) {
6101 GLenum framebuffer_enum = 0; 6108 if (framebuffer->HasSameInternalFormatsMRT()) {
6102 switch (pname) { 6109 GLenum framebuffer_enum = 0;
6103 case GL_RED_BITS: 6110 switch (pname) {
6104 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE; 6111 case GL_RED_BITS:
6105 break; 6112 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE;
6106 case GL_GREEN_BITS: 6113 break;
6107 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE; 6114 case GL_GREEN_BITS:
6108 break; 6115 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
6109 case GL_BLUE_BITS: 6116 break;
6110 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE; 6117 case GL_BLUE_BITS:
6111 break; 6118 framebuffer_enum = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
6119 break;
6120 }
6121 for (uint32_t i = 0; i < group_->max_draw_buffers(); i++) {
6122 if (framebuffer->HasColorAttachment(i)) {
6123 glGetFramebufferAttachmentParameterivEXT(
6124 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
6125 framebuffer_enum, &v);
6126 break;
6127 }
6128 }
6112 } 6129 }
6113 glGetFramebufferAttachmentParameterivEXT(
6114 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, framebuffer_enum, &v);
6115 } else { 6130 } else {
6116 v = 8; 6131 v = 8;
6117 } 6132 }
6118 } else { 6133 } else {
6119 glGetIntegerv(pname, &v); 6134 glGetIntegerv(pname, &v);
6120 } 6135 }
6121 params[0] = v; 6136 params[0] = v;
6122 } 6137 }
6123 return true; 6138 return true;
6124 case GL_STENCIL_BITS: 6139 case GL_STENCIL_BITS:
6125 *num_written = 1; 6140 *num_written = 1;
6126 if (params) { 6141 if (params) {
6127 GLint v = 0; 6142 GLint v = 0;
6128 if (feature_info_->gl_version_info().is_desktop_core_profile) { 6143 if (feature_info_->gl_version_info().is_desktop_core_profile) {
6129 Framebuffer* framebuffer = 6144 Framebuffer* framebuffer =
6130 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT); 6145 GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER_EXT);
6131 if (framebuffer) { 6146 if (framebuffer) {
6132 glGetFramebufferAttachmentParameterivEXT( 6147 if (framebuffer->HasStencilAttachment()) {
6133 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, 6148 glGetFramebufferAttachmentParameterivEXT(
6134 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v); 6149 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
6150 GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &v);
6151 }
6135 } else { 6152 } else {
6136 v = (back_buffer_has_stencil_ ? 8 : 0); 6153 v = (back_buffer_has_stencil_ ? 8 : 0);
6137 } 6154 }
6138 } else { 6155 } else {
6139 glGetIntegerv(GL_STENCIL_BITS, &v); 6156 glGetIntegerv(GL_STENCIL_BITS, &v);
6140 } 6157 }
6141 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0; 6158 params[0] = BoundFramebufferHasStencilAttachment() ? v : 0;
6142 } 6159 }
6143 return true; 6160 return true;
6144 case GL_COMPRESSED_TEXTURE_FORMATS: 6161 case GL_COMPRESSED_TEXTURE_FORMATS:
(...skipping 10926 matching lines...) Expand 10 before | Expand all | Expand 10 after
17071 } 17088 }
17072 17089
17073 // Include the auto-generated part of this file. We split this because it means 17090 // Include the auto-generated part of this file. We split this because it means
17074 // we can easily edit the non-auto generated parts right here in this file 17091 // we can easily edit the non-auto generated parts right here in this file
17075 // instead of having to edit some template or the code generator. 17092 // instead of having to edit some template or the code generator.
17076 #include "base/macros.h" 17093 #include "base/macros.h"
17077 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 17094 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
17078 17095
17079 } // namespace gles2 17096 } // namespace gles2
17080 } // namespace gpu 17097 } // 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