Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/common/gpu/client/gl_helper_readback_support.h" | 5 #include "content/common/gpu/client/gl_helper_readback_support.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "gpu/GLES2/gl2extchromium.h" | 7 #include "gpu/GLES2/gl2extchromium.h" |
| 8 #include "third_party/skia/include/core/SkImageInfo.h" | 8 #include "third_party/skia/include/core/SkImageInfo.h" |
| 9 | 9 |
| 10 namespace content { | 10 namespace content { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 dst_framebuffer); | 88 dst_framebuffer); |
| 89 gl_->FramebufferTexture2D( | 89 gl_->FramebufferTexture2D( |
| 90 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dst_texture, 0); | 90 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dst_texture, 0); |
| 91 GLint format_tmp = 0, type_tmp = 0; | 91 GLint format_tmp = 0, type_tmp = 0; |
| 92 gl_->GetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &format_tmp); | 92 gl_->GetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &format_tmp); |
| 93 gl_->GetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &type_tmp); | 93 gl_->GetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &type_tmp); |
| 94 *format_out = format_tmp; | 94 *format_out = format_tmp; |
| 95 *type_out = type_tmp; | 95 *type_out = type_tmp; |
| 96 | 96 |
| 97 struct FormatCacheEntry entry = { format, type, *format_out, *type_out }; | 97 struct FormatCacheEntry entry = { format, type, *format_out, *type_out }; |
| 98 format_cache_.push_back(entry); | 98 format_cache_.push_back(entry); |
|
no sievers
2014/10/08 21:27:13
Should we also not do this if format_out and type_
| |
| 99 } | 99 } |
| 100 | 100 |
| 101 bool GLHelperReadbackSupport::SupportsFormat(GLenum format, GLenum type) { | 101 bool GLHelperReadbackSupport::SupportsFormat(GLenum format, GLenum type) { |
| 102 // GLES2.0 Specification says this pairing is always supported | 102 // GLES2.0 Specification says this pairing is always supported |
| 103 // with additional format from GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE | 103 // with additional format from GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE |
| 104 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) | 104 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) |
| 105 return true; | 105 return true; |
| 106 | 106 |
| 107 if (format == GL_BGRA_EXT && type == GL_UNSIGNED_BYTE) { | 107 if (format == GL_BGRA_EXT && type == GL_UNSIGNED_BYTE) { |
| 108 const GLubyte* tmp = gl_->GetString(GL_EXTENSIONS); | 108 const GLubyte* tmp = gl_->GetString(GL_EXTENSIONS); |
| 109 std::string extensions = | 109 if (tmp) { |
| 110 " " + std::string(reinterpret_cast<const char*>(tmp)) + " "; | 110 std::string extensions = |
| 111 if (extensions.find(" GL_EXT_read_format_bgra ") != std::string::npos) { | 111 " " + std::string(reinterpret_cast<const char*>(tmp)) + " "; |
| 112 return true; | 112 if (extensions.find(" GL_EXT_read_format_bgra ") != std::string::npos) { |
| 113 return true; | |
| 114 } | |
| 113 } | 115 } |
| 114 } | 116 } |
| 115 | 117 |
| 116 bool supports_format = false; | 118 bool supports_format = false; |
| 117 GLenum ext_format = 0, ext_type = 0; | 119 GLenum ext_format = 0, ext_type = 0; |
| 118 GetAdditionalFormat(format, type, &ext_format, &ext_type); | 120 GetAdditionalFormat(format, type, &ext_format, &ext_type); |
| 119 if ((ext_format == format) && (ext_type == type)) { | 121 if ((ext_format == format) && (ext_type == type)) { |
| 120 supports_format = true; | 122 supports_format = true; |
| 121 } | 123 } |
| 122 return supports_format; | 124 return supports_format; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 172 return GLHelperReadbackSupport::NOT_SUPPORTED; | 174 return GLHelperReadbackSupport::NOT_SUPPORTED; |
| 173 default: | 175 default: |
| 174 NOTREACHED(); | 176 NOTREACHED(); |
| 175 break; | 177 break; |
| 176 } | 178 } |
| 177 | 179 |
| 178 return GLHelperReadbackSupport::NOT_SUPPORTED; | 180 return GLHelperReadbackSupport::NOT_SUPPORTED; |
| 179 } | 181 } |
| 180 | 182 |
| 181 } // namespace content | 183 } // namespace content |
| OLD | NEW |