summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/common/gpu/client/command_buffer_proxy_impl.cc4
-rw-r--r--content/common/gpu/client/command_buffer_proxy_impl.h1
-rw-r--r--content/common/gpu/client/gl_helper_scaling.cc11
-rw-r--r--gpu/GLES2/gl2chromium_autogen.h1
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py6
-rw-r--r--gpu/command_buffer/client/client_test_helper.h1
-rw-r--r--gpu/command_buffer/client/gles2_c_lib_autogen.h7
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc15
-rw-r--r--gpu/command_buffer/client/gles2_implementation_autogen.h2
-rw-r--r--gpu/command_buffer/client/gles2_interface_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h3
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_autogen.h1
-rw-r--r--gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h5
-rw-r--r--gpu/command_buffer/client/gpu_control.h4
-rw-r--r--gpu/command_buffer/cmd_buffer_functions.txt3
-rw-r--r--gpu/command_buffer/service/in_process_command_buffer.cc6
-rw-r--r--gpu/command_buffer/service/in_process_command_buffer.h1
-rw-r--r--gpu/command_buffer/tests/gl_manager.cc5
-rw-r--r--gpu/command_buffer/tests/gl_manager.h1
-rw-r--r--gpu/gles2_conform_support/egl/display.cc5
-rw-r--r--gpu/gles2_conform_support/egl/display.h1
-rw-r--r--mojo/gles2/command_buffer_client_impl.cc5
-rw-r--r--mojo/gles2/command_buffer_client_impl.h1
-rw-r--r--mojo/gpu/mojo_gles2_impl_autogen.cc4
-rw-r--r--mojo/gpu/mojo_gles2_impl_autogen.h1
-rw-r--r--ppapi/proxy/ppapi_command_buffer_proxy.cc5
-rw-r--r--ppapi/proxy/ppapi_command_buffer_proxy.h1
28 files changed, 93 insertions, 9 deletions
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.cc b/content/common/gpu/client/command_buffer_proxy_impl.cc
index 36e6459..7eccd84 100644
--- a/content/common/gpu/client/command_buffer_proxy_impl.cc
+++ b/content/common/gpu/client/command_buffer_proxy_impl.cc
@@ -446,6 +446,10 @@ void CommandBufferProxyImpl::SetLock(base::Lock* lock) {
lock_ = lock;
}
+bool CommandBufferProxyImpl::IsGpuChannelLost() {
+ return !channel_ || channel_->IsLost();
+}
+
uint32 CommandBufferProxyImpl::InsertSyncPoint() {
CheckLock();
if (last_state_.error != gpu::error::kNoError)
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.h b/content/common/gpu/client/command_buffer_proxy_impl.h
index cf73174..f418a5b 100644
--- a/content/common/gpu/client/command_buffer_proxy_impl.h
+++ b/content/common/gpu/client/command_buffer_proxy_impl.h
@@ -118,6 +118,7 @@ class CommandBufferProxyImpl
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock* lock) override;
+ bool IsGpuChannelLost() override;
int GetRouteID() const;
bool ProduceFrontBuffer(const gpu::Mailbox& mailbox);
diff --git a/content/common/gpu/client/gl_helper_scaling.cc b/content/common/gpu/client/gl_helper_scaling.cc
index b248d9d..7b7338d 100644
--- a/content/common/gpu/client/gl_helper_scaling.cc
+++ b/content/common/gpu/client/gl_helper_scaling.cc
@@ -870,15 +870,8 @@ void ShaderProgram::Setup(const GLchar* vertex_shader_text,
// The only reason fetching these attribute locations should fail is
// if the context was spontaneously lost (i.e., because the GPU
// process crashed, perhaps deliberately for testing).
- // Unfortunately, the only way to reliably detect context loss from
- // GLES2Interface would be to repeatedly call GetError(), and this
- // seems fragile. Most of the APIs in GLHelper should be updated to
- // be able to return an error. Fortunately, many users of this code
- // check for context loss at a higher level.
- if (!Initialized()) {
- LOG(ERROR) << "ShaderProgram::Setup: initialization failed (context lost?)";
- }
- return;
+ DCHECK_IMPLIES(!Initialized(),
+ gl_->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
}
void ShaderProgram::UseProgram(const gfx::Size& src_size,
diff --git a/gpu/GLES2/gl2chromium_autogen.h b/gpu/GLES2/gl2chromium_autogen.h
index 9dbe95d..391df10 100644
--- a/gpu/GLES2/gl2chromium_autogen.h
+++ b/gpu/GLES2/gl2chromium_autogen.h
@@ -330,6 +330,7 @@
#define glSwapInterval GLES2_GET_FUN(SwapInterval)
#define glMatrixLoadfCHROMIUM GLES2_GET_FUN(MatrixLoadfCHROMIUM)
#define glMatrixLoadIdentityCHROMIUM GLES2_GET_FUN(MatrixLoadIdentityCHROMIUM)
+#define glGetGraphicsResetStatusKHR GLES2_GET_FUN(GetGraphicsResetStatusKHR)
#define glBlendBarrierKHR GLES2_GET_FUN(BlendBarrierKHR)
#endif // GPU_GLES2_GL2CHROMIUM_AUTOGEN_H_
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index ab60f0d..af622ce 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -2699,6 +2699,12 @@ _FUNCTION_INFO = {
'gl_test_func': 'glGetFramebufferAttachmentParameterivEXT',
'result': ['SizedResult<GLint>'],
},
+ 'GetGraphicsResetStatusKHR': {
+ 'extension': True,
+ 'client_test': False,
+ 'gen_cmd': False,
+ 'trace_level': 1,
+ },
'GetInteger64v': {
'type': 'GETn',
'result': ['SizedResult<GLint64>'],
diff --git a/gpu/command_buffer/client/client_test_helper.h b/gpu/command_buffer/client/client_test_helper.h
index 10dd75c..07234c7 100644
--- a/gpu/command_buffer/client/client_test_helper.h
+++ b/gpu/command_buffer/client/client_test_helper.h
@@ -111,6 +111,7 @@ class MockClientGpuControl : public GpuControl {
MOCK_METHOD1(SetSurfaceVisible, void(bool visible));
MOCK_METHOD1(CreateStreamTexture, uint32(uint32));
MOCK_METHOD1(SetLock, void(base::Lock*));
+ MOCK_METHOD0(IsGpuChannelLost, bool());
private:
DISALLOW_COPY_AND_ASSIGN(MockClientGpuControl);
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index 7eb7a0e..591df8a 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -1393,6 +1393,9 @@ void GLES2MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) {
void GLES2MatrixLoadIdentityCHROMIUM(GLenum matrixMode) {
gles2::GetGLContext()->MatrixLoadIdentityCHROMIUM(matrixMode);
}
+GLenum GLES2GetGraphicsResetStatusKHR() {
+ return gles2::GetGLContext()->GetGraphicsResetStatusKHR();
+}
void GLES2BlendBarrierKHR() {
gles2::GetGLContext()->BlendBarrierKHR();
}
@@ -2620,6 +2623,10 @@ extern const NameToFunc g_gles2_function_table[] = {
reinterpret_cast<GLES2FunctionPointer>(glMatrixLoadIdentityCHROMIUM),
},
{
+ "glGetGraphicsResetStatusKHR",
+ reinterpret_cast<GLES2FunctionPointer>(glGetGraphicsResetStatusKHR),
+ },
+ {
"glBlendBarrierKHR",
reinterpret_cast<GLES2FunctionPointer>(glBlendBarrierKHR),
},
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index e859299..8f75e7f 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -4103,6 +4103,21 @@ void GLES2Implementation::GetVertexAttribIuiv(
CheckGLError();
}
+GLenum GLES2Implementation::GetGraphicsResetStatusKHR() {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetGraphicsResetStatusKHR()");
+ // If we can't make command buffers then the context is lost.
+ if (gpu_control_->IsGpuChannelLost())
+ return GL_UNKNOWN_CONTEXT_RESET_KHR;
+ // Otherwise, check the command buffer if it is lost.
+ if (helper_->IsContextLost()) {
+ // TODO(danakj): We could GetLastState() off the CommandBuffer and return
+ // the actual reason here if we cared to.
+ return GL_UNKNOWN_CONTEXT_RESET_KHR;
+ }
+ return GL_NO_ERROR;
+}
+
void GLES2Implementation::Swap() {
SwapBuffers();
}
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index b89f8d6..b4b9e98 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -1041,6 +1041,8 @@ void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) override;
void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) override;
+GLenum GetGraphicsResetStatusKHR() override;
+
void BlendBarrierKHR() override;
#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h
index 6b30a53..ae93c08 100644
--- a/gpu/command_buffer/client/gles2_interface_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_autogen.h
@@ -769,5 +769,6 @@ virtual void ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order,
virtual void SwapInterval(GLint interval) = 0;
virtual void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) = 0;
virtual void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) = 0;
+virtual GLenum GetGraphicsResetStatusKHR() = 0;
virtual void BlendBarrierKHR() = 0;
#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
index 3471376..290bc28 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
@@ -749,5 +749,6 @@ void ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order,
void SwapInterval(GLint interval) override;
void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) override;
void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) override;
+GLenum GetGraphicsResetStatusKHR() override;
void BlendBarrierKHR() override;
#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
index 1a462d7..aa07a67 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
@@ -1274,6 +1274,9 @@ void GLES2InterfaceStub::MatrixLoadfCHROMIUM(GLenum /* matrixMode */,
}
void GLES2InterfaceStub::MatrixLoadIdentityCHROMIUM(GLenum /* matrixMode */) {
}
+GLenum GLES2InterfaceStub::GetGraphicsResetStatusKHR() {
+ return 0;
+}
void GLES2InterfaceStub::BlendBarrierKHR() {
}
#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
index d5f0ed9..b017be2 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
@@ -749,5 +749,6 @@ void ScheduleOverlayPlaneCHROMIUM(GLint plane_z_order,
void SwapInterval(GLint interval) override;
void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) override;
void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) override;
+GLenum GetGraphicsResetStatusKHR() override;
void BlendBarrierKHR() override;
#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_TRACE_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
index be4a030..34b0743 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -2181,6 +2181,11 @@ void GLES2TraceImplementation::MatrixLoadIdentityCHROMIUM(GLenum matrixMode) {
gl_->MatrixLoadIdentityCHROMIUM(matrixMode);
}
+GLenum GLES2TraceImplementation::GetGraphicsResetStatusKHR() {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::GetGraphicsResetStatusKHR");
+ return gl_->GetGraphicsResetStatusKHR();
+}
+
void GLES2TraceImplementation::BlendBarrierKHR() {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::BlendBarrierKHR");
gl_->BlendBarrierKHR();
diff --git a/gpu/command_buffer/client/gpu_control.h b/gpu/command_buffer/client/gpu_control.h
index 2b303b3..75bd082 100644
--- a/gpu/command_buffer/client/gpu_control.h
+++ b/gpu/command_buffer/client/gpu_control.h
@@ -85,6 +85,10 @@ class GPU_EXPORT GpuControl {
// may not be supported with all implementations.
virtual void SetLock(base::Lock*) = 0;
+ // Returns true if the channel to the Gpu is lost. When true, all contexts
+ // should be considered as lost.
+ virtual bool IsGpuChannelLost() = 0;
+
private:
DISALLOW_COPY_AND_ASSIGN(GpuControl);
};
diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt
index f154161..3613d8a 100644
--- a/gpu/command_buffer/cmd_buffer_functions.txt
+++ b/gpu/command_buffer/cmd_buffer_functions.txt
@@ -313,5 +313,8 @@ GL_APICALL void GL_APIENTRY glSwapInterval (GLint interval);
GL_APICALL void GL_APIENTRY glMatrixLoadfCHROMIUM (GLenumMatrixMode matrixMode, const GLfloat* m);
GL_APICALL void GL_APIENTRY glMatrixLoadIdentityCHROMIUM (GLenumMatrixMode matrixMode);
+// Extension KHR_robustness
+GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void);
+
// Extension KHR_blend_equation_advanced
GL_APICALL void GL_APIENTRY glBlendBarrierKHR (void);
diff --git a/gpu/command_buffer/service/in_process_command_buffer.cc b/gpu/command_buffer/service/in_process_command_buffer.cc
index 5b325ab..5140da6 100644
--- a/gpu/command_buffer/service/in_process_command_buffer.cc
+++ b/gpu/command_buffer/service/in_process_command_buffer.cc
@@ -912,6 +912,12 @@ uint32 InProcessCommandBuffer::CreateStreamTexture(uint32 texture_id) {
void InProcessCommandBuffer::SetLock(base::Lock*) {
}
+bool InProcessCommandBuffer::IsGpuChannelLost() {
+ // There is no such channel to lose for in-process contexts. This only
+ // makes sense for out-of-process command buffers.
+ return false;
+}
+
uint32 InProcessCommandBuffer::CreateStreamTextureOnGpuThread(
uint32 client_texture_id) {
#if defined(OS_ANDROID)
diff --git a/gpu/command_buffer/service/in_process_command_buffer.h b/gpu/command_buffer/service/in_process_command_buffer.h
index b3f6eb8..c6c4f2c 100644
--- a/gpu/command_buffer/service/in_process_command_buffer.h
+++ b/gpu/command_buffer/service/in_process_command_buffer.h
@@ -121,6 +121,7 @@ class GPU_EXPORT InProcessCommandBuffer : public CommandBuffer,
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock*) override;
+ bool IsGpuChannelLost() override;
// The serializer interface to the GPU service (i.e. thread).
class Service {
diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc
index d527203..10136c0 100644
--- a/gpu/command_buffer/tests/gl_manager.cc
+++ b/gpu/command_buffer/tests/gl_manager.cc
@@ -516,4 +516,9 @@ void GLManager::SetLock(base::Lock*) {
NOTIMPLEMENTED();
}
+bool GLManager::IsGpuChannelLost() {
+ NOTIMPLEMENTED();
+ return false;
+}
+
} // namespace gpu
diff --git a/gpu/command_buffer/tests/gl_manager.h b/gpu/command_buffer/tests/gl_manager.h
index c163ac0..e06387e 100644
--- a/gpu/command_buffer/tests/gl_manager.h
+++ b/gpu/command_buffer/tests/gl_manager.h
@@ -120,6 +120,7 @@ class GLManager : private GpuControl {
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock*) override;
+ bool IsGpuChannelLost() override;
private:
void PumpCommands();
diff --git a/gpu/gles2_conform_support/egl/display.cc b/gpu/gles2_conform_support/egl/display.cc
index bd17250..d65e589 100644
--- a/gpu/gles2_conform_support/egl/display.cc
+++ b/gpu/gles2_conform_support/egl/display.cc
@@ -339,4 +339,9 @@ void Display::SetLock(base::Lock*) {
NOTIMPLEMENTED();
}
+bool Display::IsGpuChannelLost() {
+ NOTIMPLEMENTED();
+ return false;
+}
+
} // namespace egl
diff --git a/gpu/gles2_conform_support/egl/display.h b/gpu/gles2_conform_support/egl/display.h
index 9b349bd..0566da6 100644
--- a/gpu/gles2_conform_support/egl/display.h
+++ b/gpu/gles2_conform_support/egl/display.h
@@ -93,6 +93,7 @@ class Display : private gpu::GpuControl {
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock*) override;
+ bool IsGpuChannelLost() override;
private:
EGLNativeDisplayType display_id_;
diff --git a/mojo/gles2/command_buffer_client_impl.cc b/mojo/gles2/command_buffer_client_impl.cc
index 6933679..97ea89a 100644
--- a/mojo/gles2/command_buffer_client_impl.cc
+++ b/mojo/gles2/command_buffer_client_impl.cc
@@ -335,4 +335,9 @@ void CommandBufferClientImpl::MakeProgressAndUpdateState() {
void CommandBufferClientImpl::SetLock(base::Lock* lock) {
}
+bool CommandBufferClientImpl::IsGpuChannelLost() {
+ // This is only possible for out-of-process command buffers.
+ return false;
+}
+
} // namespace gles2
diff --git a/mojo/gles2/command_buffer_client_impl.h b/mojo/gles2/command_buffer_client_impl.h
index 75bcc26..16eb7b8 100644
--- a/mojo/gles2/command_buffer_client_impl.h
+++ b/mojo/gles2/command_buffer_client_impl.h
@@ -72,6 +72,7 @@ class CommandBufferClientImpl : public mojo::CommandBufferLostContextObserver,
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock*) override;
+ bool IsGpuChannelLost() override;
private:
class SyncClientImpl;
diff --git a/mojo/gpu/mojo_gles2_impl_autogen.cc b/mojo/gpu/mojo_gles2_impl_autogen.cc
index 2ffcbf1..f3d0131 100644
--- a/mojo/gpu/mojo_gles2_impl_autogen.cc
+++ b/mojo/gpu/mojo_gles2_impl_autogen.cc
@@ -1615,6 +1615,10 @@ void MojoGLES2Impl::MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) {
void MojoGLES2Impl::MatrixLoadIdentityCHROMIUM(GLenum matrixMode) {
NOTREACHED() << "Unimplemented MatrixLoadIdentityCHROMIUM.";
}
+GLenum MojoGLES2Impl::GetGraphicsResetStatusKHR() {
+ NOTREACHED() << "Unimplemented GetGraphicsResetStatusKHR.";
+ return 0;
+}
void MojoGLES2Impl::BlendBarrierKHR() {
NOTREACHED() << "Unimplemented BlendBarrierKHR.";
}
diff --git a/mojo/gpu/mojo_gles2_impl_autogen.h b/mojo/gpu/mojo_gles2_impl_autogen.h
index 8b242d7..a6746d0 100644
--- a/mojo/gpu/mojo_gles2_impl_autogen.h
+++ b/mojo/gpu/mojo_gles2_impl_autogen.h
@@ -774,6 +774,7 @@ class MojoGLES2Impl : public gpu::gles2::GLES2Interface {
void SwapInterval(GLint interval) override;
void MatrixLoadfCHROMIUM(GLenum matrixMode, const GLfloat* m) override;
void MatrixLoadIdentityCHROMIUM(GLenum matrixMode) override;
+ GLenum GetGraphicsResetStatusKHR() override;
void BlendBarrierKHR() override;
private:
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.cc b/ppapi/proxy/ppapi_command_buffer_proxy.cc
index 73f6dfc..384df02 100644
--- a/ppapi/proxy/ppapi_command_buffer_proxy.cc
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.cc
@@ -162,6 +162,11 @@ void PpapiCommandBufferProxy::SetLock(base::Lock*) {
NOTIMPLEMENTED();
}
+bool PpapiCommandBufferProxy::IsGpuChannelLost() {
+ NOTIMPLEMENTED();
+ return false;
+}
+
uint32 PpapiCommandBufferProxy::InsertSyncPoint() {
uint32 sync_point = 0;
if (last_state_.error == gpu::error::kNoError) {
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.h b/ppapi/proxy/ppapi_command_buffer_proxy.h
index 62f77a4..24ed177 100644
--- a/ppapi/proxy/ppapi_command_buffer_proxy.h
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.h
@@ -66,6 +66,7 @@ class PPAPI_PROXY_EXPORT PpapiCommandBufferProxy : public gpu::CommandBuffer,
void SetSurfaceVisible(bool visible) override;
uint32 CreateStreamTexture(uint32 texture_id) override;
void SetLock(base::Lock*) override;
+ bool IsGpuChannelLost() override;
private:
bool Send(IPC::Message* msg);