| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cc/test/test_context_provider.h" | 5 #include "cc/test/test_context_provider.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 context_thread_checker_.CalledOnValidThread()); | 48 context_thread_checker_.CalledOnValidThread()); |
| 49 } | 49 } |
| 50 | 50 |
| 51 bool TestContextProvider::BindToCurrentThread() { | 51 bool TestContextProvider::BindToCurrentThread() { |
| 52 // This is called on the thread the context will be used. | 52 // This is called on the thread the context will be used. |
| 53 DCHECK(context_thread_checker_.CalledOnValidThread()); | 53 DCHECK(context_thread_checker_.CalledOnValidThread()); |
| 54 | 54 |
| 55 if (bound_) | 55 if (bound_) |
| 56 return true; | 56 return true; |
| 57 | 57 |
| 58 if (context3d_->isContextLost()) { | 58 if (context_gl_->GetGraphicsResetStatusKHR() != GL_NO_ERROR) { |
| 59 base::AutoLock lock(destroyed_lock_); | 59 base::AutoLock lock(destroyed_lock_); |
| 60 destroyed_ = true; | 60 destroyed_ = true; |
| 61 return false; | 61 return false; |
| 62 } | 62 } |
| 63 bound_ = true; | 63 bound_ = true; |
| 64 | 64 |
| 65 context3d_->set_context_lost_callback( | 65 context3d_->set_context_lost_callback( |
| 66 base::Bind(&TestContextProvider::OnLostContext, | 66 base::Bind(&TestContextProvider::OnLostContext, |
| 67 base::Unretained(this))); | 67 base::Unretained(this))); |
| 68 | 68 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 99 if (gr_context_) | 99 if (gr_context_) |
| 100 return gr_context_.get(); | 100 return gr_context_.get(); |
| 101 | 101 |
| 102 skia::RefPtr<class SkGLContext> gl_context = | 102 skia::RefPtr<class SkGLContext> gl_context = |
| 103 skia::AdoptRef(SkNullGLContext::Create(kNone_GrGLStandard)); | 103 skia::AdoptRef(SkNullGLContext::Create(kNone_GrGLStandard)); |
| 104 gl_context->makeCurrent(); | 104 gl_context->makeCurrent(); |
| 105 gr_context_ = skia::AdoptRef(GrContext::Create( | 105 gr_context_ = skia::AdoptRef(GrContext::Create( |
| 106 kOpenGL_GrBackend, reinterpret_cast<GrBackendContext>(gl_context->gl()))); | 106 kOpenGL_GrBackend, reinterpret_cast<GrBackendContext>(gl_context->gl()))); |
| 107 | 107 |
| 108 // If GlContext is already lost, also abandon the new GrContext. | 108 // If GlContext is already lost, also abandon the new GrContext. |
| 109 if (IsContextLost()) | 109 if (ContextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERROR) |
| 110 gr_context_->abandonContext(); | 110 gr_context_->abandonContext(); |
| 111 | 111 |
| 112 return gr_context_.get(); | 112 return gr_context_.get(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void TestContextProvider::InvalidateGrContext(uint32_t state) { | 115 void TestContextProvider::InvalidateGrContext(uint32_t state) { |
| 116 DCHECK(bound_); | 116 DCHECK(bound_); |
| 117 DCHECK(context_thread_checker_.CalledOnValidThread()); | 117 DCHECK(context_thread_checker_.CalledOnValidThread()); |
| 118 | 118 |
| 119 if (gr_context_) | 119 if (gr_context_) |
| 120 gr_context_.get()->resetContext(state); | 120 gr_context_.get()->resetContext(state); |
| 121 } | 121 } |
| 122 | 122 |
| 123 void TestContextProvider::SetupLock() { | 123 void TestContextProvider::SetupLock() { |
| 124 } | 124 } |
| 125 | 125 |
| 126 base::Lock* TestContextProvider::GetLock() { | 126 base::Lock* TestContextProvider::GetLock() { |
| 127 return &context_lock_; | 127 return &context_lock_; |
| 128 } | 128 } |
| 129 | 129 |
| 130 bool TestContextProvider::IsContextLost() { | |
| 131 DCHECK(bound_); | |
| 132 DCHECK(context_thread_checker_.CalledOnValidThread()); | |
| 133 | |
| 134 return context3d_->isContextLost(); | |
| 135 } | |
| 136 | |
| 137 void TestContextProvider::VerifyContexts() { | 130 void TestContextProvider::VerifyContexts() { |
| 138 DCHECK(bound_); | 131 DCHECK(bound_); |
| 139 DCHECK(context_thread_checker_.CalledOnValidThread()); | 132 DCHECK(context_thread_checker_.CalledOnValidThread()); |
| 140 | 133 |
| 141 if (context3d_->isContextLost()) { | 134 if (ContextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERROR) { |
| 142 base::AutoLock lock(destroyed_lock_); | 135 base::AutoLock lock(destroyed_lock_); |
| 143 destroyed_ = true; | 136 destroyed_ = true; |
| 144 } | 137 } |
| 145 } | 138 } |
| 146 | 139 |
| 147 void TestContextProvider::DeleteCachedResources() { | 140 void TestContextProvider::DeleteCachedResources() { |
| 148 } | 141 } |
| 149 | 142 |
| 150 bool TestContextProvider::DestroyedOnMainThread() { | 143 bool TestContextProvider::DestroyedOnMainThread() { |
| 151 DCHECK(main_thread_checker_.CalledOnValidThread()); | 144 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 DCHECK(memory_policy_changed_callback_.is_null() || cb.is_null()); | 192 DCHECK(memory_policy_changed_callback_.is_null() || cb.is_null()); |
| 200 memory_policy_changed_callback_ = cb; | 193 memory_policy_changed_callback_ = cb; |
| 201 } | 194 } |
| 202 | 195 |
| 203 void TestContextProvider::SetMaxTransferBufferUsageBytes( | 196 void TestContextProvider::SetMaxTransferBufferUsageBytes( |
| 204 size_t max_transfer_buffer_usage_bytes) { | 197 size_t max_transfer_buffer_usage_bytes) { |
| 205 context3d_->SetMaxTransferBufferUsageBytes(max_transfer_buffer_usage_bytes); | 198 context3d_->SetMaxTransferBufferUsageBytes(max_transfer_buffer_usage_bytes); |
| 206 } | 199 } |
| 207 | 200 |
| 208 } // namespace cc | 201 } // namespace cc |
| OLD | NEW |