Pull in various gpu/command_buffer fixes from chromium
This includes the //gpu portions of:
https://crrev.com/328526
https://crrev.com/327384
https://crrev.com/327344
https://crrev.com/327226
https://crrev.com/327202
https://crrev.com/327197
https://crrev.com/326845
https://crrev.com/326662
https://crrev.com/325767
https://crrev.com/325314
https://crrev.com/324736
https://crrev.com/324152
https://crrev.com/323932
https://crrev.com/323856
https://crrev.com/322503
https://crrev.com/322498
https://crrev.com/322403
R=viettrungluu@chromium.org
TBR=viettrungluu@chromium.org
Review URL: https://codereview.chromium.org/1135943002
diff --git a/ui/gl/gl_context_stub_with_extensions.cc b/ui/gl/gl_context_stub_with_extensions.cc
index 1065df7..855eaa2 100644
--- a/ui/gl/gl_context_stub_with_extensions.cc
+++ b/ui/gl/gl_context_stub_with_extensions.cc
@@ -27,4 +27,10 @@
return version_str_;
}
+bool GLContextStubWithExtensions::WasAllocatedUsingRobustnessExtension() {
+ return HasExtension("GL_ARB_robustness") ||
+ HasExtension("GL_KHR_robustness") ||
+ HasExtension("GL_EXT_robustness");
+}
+
} // namespace gfx
diff --git a/ui/gl/gl_context_stub_with_extensions.h b/ui/gl/gl_context_stub_with_extensions.h
index 190e03e..d9da9d5 100644
--- a/ui/gl/gl_context_stub_with_extensions.h
+++ b/ui/gl/gl_context_stub_with_extensions.h
@@ -19,6 +19,7 @@
void AddExtensionsString(const char* extensions);
void SetGLVersionString(const char* version_str);
+ bool WasAllocatedUsingRobustnessExtension() override;
protected:
std::string GetGLVersion() override;
diff --git a/ui/gl/gl_version_info.h b/ui/gl/gl_version_info.h
index d8f2730..9694475 100644
--- a/ui/gl/gl_version_info.h
+++ b/ui/gl/gl_version_info.h
@@ -19,6 +19,11 @@
(major_version == major && minor_version >= minor));
}
+ bool IsLowerThanGL(unsigned major, unsigned minor) const {
+ return !is_es && (major_version < major ||
+ (major_version == major && minor_version < minor));
+ }
+
bool IsAtLeastGLES(unsigned major, unsigned minor) const {
return is_es && (major_version > major ||
(major_version == major && minor_version >= minor));
diff --git a/ui/gl/gpu_timing.cc b/ui/gl/gpu_timing.cc
index a84d3f7..ee90490 100644
--- a/ui/gl/gpu_timing.cc
+++ b/ui/gl/gpu_timing.cc
@@ -44,7 +44,16 @@
}
GPUTimer::~GPUTimer() {
- glDeleteQueries(2, queries_);
+ // Destroy() must be called before the destructor.
+ DCHECK(queries_[0] == 0);
+ DCHECK(queries_[1] == 0);
+}
+
+void GPUTimer::Destroy(bool have_context) {
+ if (have_context) {
+ glDeleteQueries(2, queries_);
+ }
+ memset(queries_, 0, sizeof(queries_));
}
void GPUTimer::Start() {
diff --git a/ui/gl/gpu_timing.h b/ui/gl/gpu_timing.h
index a749ef1..5658097 100644
--- a/ui/gl/gpu_timing.h
+++ b/ui/gl/gpu_timing.h
@@ -76,6 +76,10 @@
public:
~GPUTimer();
+ // Destroy the timer object. This must be explicitly called before destroying
+ // this object.
+ void Destroy(bool have_context);
+
void Start();
void End();
bool IsAvailable();