| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |