提交 28682514 编写于 作者: C Chinmay Garde 提交者: GitHub

Remove rarely used GLConnection stuff in flow. (#3440)

I had added this initially as a means of making it easier to deal with OpenGL directly in Flow. However, we are moving away from dealing with the client rendering APIs directly. Instead, delegating everything to Skia. Besides, we only ever used this to log the GPU description in case of context setup failures. This has not proved to be useful so far. Also, having this in place is making it difficult to remove all dependencies on GL in Shell.
上级 e5f16da9
......@@ -61,11 +61,5 @@ source_set("flow") {
"//apps/mozart/lib/skia",
"//apps/mozart/services/composition",
]
} else {
sources += [
"gl_connection.cc",
"gl_connection.h",
"open_gl.h",
]
}
}
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gl_connection.h"
#include <sstream>
#include <vector>
#include <algorithm>
#include <iomanip>
namespace flow {
static std::string GLGetString(GLenum name) {
auto string = reinterpret_cast<const char*>(glGetString(name));
return string != nullptr ? string : "";
}
static GLConnection::Version GLGetVersion(GLenum name) {
GLConnection::Version version;
auto versionString = GLGetString(name);
if (versionString.length() == 0) {
return version;
}
{
// Check for the GLSL ES prefix.
const std::string glslesPrefix("OpenGL ES GLSL ES ");
if (versionString.compare(0, glslesPrefix.length(), glslesPrefix) == 0) {
version.isES = true;
versionString = versionString.substr(glslesPrefix.length());
}
}
{
// Check for the GL ES prefix.
const std::string glesPrefix("OpenGL ES ");
if (versionString.compare(0, glesPrefix.length(), glesPrefix) == 0) {
version.isES = true;
versionString = versionString.substr(glesPrefix.length());
}
}
std::istringstream stream(versionString);
for (size_t i = 0; i < 3; i++) {
size_t item = 0;
if (stream >> item) {
version.items[i] = item;
if (stream.peek() == ' ') {
stream.ignore(1); // space
stream >> version.vendorString;
break;
} else {
stream.ignore(1); // dot
}
} else {
break;
}
}
return version;
}
static std::string VersionToString(GLConnection::Version version) {
if (version.major == 0 && version.minor == 0 && version.release == 0) {
return "Unknown";
}
std::stringstream stream;
stream << version.major << "." << version.minor;
if (version.release != 0) {
stream << "." << version.release;
}
if (version.vendorString.size() != 0) {
stream << " " << version.vendorString;
}
if (version.isES) {
stream << " ES";
}
return stream.str();
}
GLConnection::GLConnection()
: vendor_(GLGetString(GL_VENDOR)),
renderer_(GLGetString(GL_RENDERER)),
version_(GLGetVersion(GL_VERSION)),
shading_language_version_(GLGetVersion(GL_SHADING_LANGUAGE_VERSION)) {
std::istringstream extensionsStream(GLGetString(GL_EXTENSIONS));
extensionsStream >> std::skipws;
std::string extension;
while (extensionsStream >> extension) {
extensions_.emplace(std::move(extension));
}
}
GLConnection::~GLConnection() = default;
const std::string& GLConnection::Vendor() const {
return vendor_;
}
const std::string& GLConnection::Renderer() const {
return renderer_;
}
const GLConnection::Version& GLConnection::GLVersion() const {
return version_;
}
std::string GLConnection::VersionString() const {
return VersionToString(version_);
}
const GLConnection::Version& GLConnection::ShadingLanguageVersion() const {
return shading_language_version_;
}
std::string GLConnection::ShadingLanguageVersionString() const {
return VersionToString(shading_language_version_);
}
std::string GLConnection::Platform() const {
std::stringstream stream;
stream << Vendor() << ": " << Renderer();
return stream.str();
}
const std::set<std::string>& GLConnection::Extensions() const {
return extensions_;
}
std::string GLConnection::Description() const {
std::vector<std::pair<std::string, std::string>> items;
items.emplace_back("Vendor", Vendor());
items.emplace_back("Renderer", Renderer());
items.emplace_back("Version", VersionString());
items.emplace_back("Shader Version", ShadingLanguageVersionString());
std::string extensionsLabel("Extensions");
size_t padding = extensionsLabel.size();
for (const auto& item : items) {
padding = std::max(padding, item.first.size());
}
padding += 1;
std::stringstream stream;
stream << std::endl;
for (const auto& item : items) {
stream << std::setw(padding) << item.first << std::setw(0) << ": "
<< item.second << std::endl;
}
if (extensions_.size() != 0) {
std::string paddingString;
paddingString.resize(padding + 2, ' ');
stream << std::setw(padding) << extensionsLabel << std::setw(0) << ": "
<< extensions_.size() << " Available" << std::endl;
for (const auto& extension : extensions_) {
stream << paddingString << extension << std::endl;
}
}
return stream.str();
}
} // namespace flow
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLOW_GL_CONNECTION_H_
#define FLOW_GL_CONNECTION_H_
#include "lib/ftl/macros.h"
#include "open_gl.h"
#include <string>
#include <set>
#ifdef major
#undef major
#endif
#ifdef minor
#undef minor
#endif
namespace flow {
class GLConnection {
public:
struct Version {
union {
struct {
size_t major;
size_t minor;
size_t release;
};
size_t items[3];
};
std::string vendorString;
bool isES;
Version() : major(0), minor(0), release(0), isES(false) {}
Version(size_t theMajor, size_t theMinor, size_t theRelease)
: major(theMajor), minor(theMinor), release(theRelease), isES(false) {}
};
GLConnection();
~GLConnection();
const std::string& Vendor() const;
const std::string& Renderer() const;
std::string Platform() const;
const Version& GLVersion() const;
std::string VersionString() const;
const Version& ShadingLanguageVersion() const;
std::string ShadingLanguageVersionString() const;
const std::set<std::string>& Extensions() const;
std::string Description() const;
private:
std::string vendor_;
std::string renderer_;
Version version_;
Version shading_language_version_;
std::set<std::string> extensions_;
FTL_DISALLOW_COPY_AND_ASSIGN(GLConnection);
};
} // namespace flow
#endif // FLOW_GL_CONNECTION_H_
\ No newline at end of file
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_FLOW_OPEN_GL_H_
#define FLUTTER_FLOW_OPEN_GL_H_
#include "lib/ftl/build_config.h"
#if defined(OS_IOS)
#include <OpenGLES/ES2/gl.h>
#elif defined(OS_MACOSX)
#include <OpenGL/gl.h>
#elif defined(OS_ANDROID) || defined(OS_FUCHSIA)
#include <GLES2/gl2.h>
#elif defined(OS_LINUX)
#include <GL/gl.h>
#else
#error OpenGL headers not found for this platform.
#endif
#endif // FLUTTER_FLOW_OPEN_GL_H_
......@@ -4,7 +4,6 @@
#include "gpu_surface_gl.h"
#include "flutter/flow/gl_connection.h"
#include "flutter/glue/trace_event.h"
#include "lib/ftl/arraysize.h"
#include "lib/ftl/logging.h"
......@@ -50,9 +49,7 @@ bool GPUSurfaceGL::Setup() {
sk_sp<GrContext>(GrContext::Create(kOpenGL_GrBackend, backend_context));
if (context_ == nullptr) {
flow::GLConnection connection;
FTL_LOG(INFO) << "Failed to setup GL context. Aborting.";
FTL_LOG(INFO) << connection.Description();
FTL_LOG(INFO) << "Failed to setup Skia Gr context.";
return false;
}
......
......@@ -14159,15 +14159,12 @@ FILE: ../../../flutter/content_handler/rasterizer.cc
FILE: ../../../flutter/content_handler/rasterizer.h
FILE: ../../../flutter/content_handler/runtime_holder.cc
FILE: ../../../flutter/content_handler/runtime_holder.h
FILE: ../../../flutter/flow/gl_connection.cc
FILE: ../../../flutter/flow/gl_connection.h
FILE: ../../../flutter/flow/layers/backdrop_filter_layer.cc
FILE: ../../../flutter/flow/layers/backdrop_filter_layer.h
FILE: ../../../flutter/flow/layers/child_scene_layer.cc
FILE: ../../../flutter/flow/layers/child_scene_layer.h
FILE: ../../../flutter/flow/layers/shader_mask_layer.cc
FILE: ../../../flutter/flow/layers/shader_mask_layer.h
FILE: ../../../flutter/flow/open_gl.h
FILE: ../../../flutter/flow/process_info.h
FILE: ../../../flutter/flow/raster_cache.cc
FILE: ../../../flutter/flow/raster_cache.h
......@@ -72119,4 +72116,4 @@ freely, subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
====================================================================================================
Total license count: 695
31553 of 31553 ██████████ 100% (0 missing licenses) Done.
31550 of 31550 ██████████ 100% (0 missing licenses) Done.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册