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

Unified Diff: gpu/command_buffer/service/feature_info.cc

Issue 499283002: gpu: support immutable texture on Linux Mesa driver and GLES3. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prevent GLES unless GL_APPLE_texture_format_BGRA8888 Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/feature_info.cc
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index de3eb5623ef77375cdcb2cb5091abb0413f575e4..004a75bbffe5b1c860b3602291ef8deb6caa02c2 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -236,11 +236,13 @@ void FeatureInfo::InitializeFeatures() {
feature_flags_.is_angle = StartsWithASCII(renderer_str, "ANGLE", true);
}
+ bool is_es = false;
bool is_es3 = false;
const char* version_str =
reinterpret_cast<const char*>(glGetString(GL_VERSION));
if (version_str) {
std::string lstr(base::StringToLowerASCII(std::string(version_str)));
+ is_es = (lstr.substr(0, 9) == "opengl es");
is_es3 = (lstr.substr(0, 12) == "opengl es 3.");
}
@@ -396,10 +398,14 @@ void FeatureInfo::InitializeFeatures() {
bool enable_texture_format_bgra8888 = false;
bool enable_read_format_bgra = false;
bool enable_render_buffer_bgra = false;
+ // Only APPLE_texture_format_BGRA8888 extension allows BGRA8_EXT in GLES's
+ // glTexStorage2D.
+ bool enable_immutable_texture_format_bgra_on_es =
+ extensions.Contains("GL_APPLE_texture_format_BGRA8888");
// Check if we should allow GL_EXT_texture_format_BGRA8888
if (extensions.Contains("GL_EXT_texture_format_BGRA8888") ||
- extensions.Contains("GL_APPLE_texture_format_BGRA8888") ||
+ enable_immutable_texture_format_bgra_on_es ||
extensions.Contains("GL_EXT_bgra")) {
enable_texture_format_bgra8888 = true;
}
@@ -692,7 +698,12 @@ void FeatureInfo::InitializeFeatures() {
validators_.texture_parameter.AddValue(GL_TEXTURE_USAGE_ANGLE);
}
- if (extensions.Contains("GL_EXT_texture_storage")) {
+ // Disable it if BGRA8_EXT isn't allowed.
+ bool support_bgra = (enable_texture_format_bgra8888 && !is_es) ||
+ (enable_immutable_texture_format_bgra_on_es && is_es);
+ if (support_bgra &&
+ (extensions.Contains("GL_EXT_texture_storage") ||
+ extensions.Contains("GL_ARB_texture_storage") || is_es3)) {
feature_flags_.ext_texture_storage = true;
AddExtensionString("GL_EXT_texture_storage");
validators_.texture_parameter.AddValue(GL_TEXTURE_IMMUTABLE_FORMAT_EXT);

Powered by Google App Engine
This is Rietveld 408576698