OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/gpu/gpu_process_host.h" | 5 #include "content/browser/gpu/gpu_process_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 | 817 |
818 if (create_gpu_memory_buffer_requests_.empty()) | 818 if (create_gpu_memory_buffer_requests_.empty()) |
819 return; | 819 return; |
820 | 820 |
821 CreateGpuMemoryBufferCallback callback = | 821 CreateGpuMemoryBufferCallback callback = |
822 create_gpu_memory_buffer_requests_.front(); | 822 create_gpu_memory_buffer_requests_.front(); |
823 create_gpu_memory_buffer_requests_.pop(); | 823 create_gpu_memory_buffer_requests_.pop(); |
824 callback.Run(handle); | 824 callback.Run(handle); |
825 } | 825 } |
826 | 826 |
827 void GpuProcessHost::OnDidCreateOffscreenContext(const GURL& url) { | 827 void GpuProcessHost::OnDidCreateOffscreenContext(const std::string& url) { |
828 urls_with_live_offscreen_contexts_.insert(url); | 828 urls_with_live_offscreen_contexts_.insert(GURL(url)); |
829 } | 829 } |
830 | 830 |
831 void GpuProcessHost::OnDidLoseContext(bool offscreen, | 831 void GpuProcessHost::OnDidLoseContext(bool offscreen, |
832 gpu::error::ContextLostReason reason, | 832 gpu::error::ContextLostReason reason, |
833 const GURL& url) { | 833 const std::string& url) { |
| 834 const GURL gurl(url); |
834 // TODO(kbr): would be nice to see the "offscreen" flag too. | 835 // TODO(kbr): would be nice to see the "offscreen" flag too. |
835 TRACE_EVENT2("gpu", "GpuProcessHost::OnDidLoseContext", | 836 TRACE_EVENT2("gpu", "GpuProcessHost::OnDidLoseContext", "reason", reason, |
836 "reason", reason, | 837 "url", gurl.possibly_invalid_spec()); |
837 "url", | |
838 url.possibly_invalid_spec()); | |
839 | 838 |
840 if (!offscreen || url.is_empty()) { | 839 if (!offscreen || gurl.is_empty()) { |
841 // Assume that the loss of the compositor's or accelerated canvas' | 840 // Assume that the loss of the compositor's or accelerated canvas' |
842 // context is a serious event and blame the loss on all live | 841 // context is a serious event and blame the loss on all live |
843 // offscreen contexts. This more robustly handles situations where | 842 // offscreen contexts. This more robustly handles situations where |
844 // the GPU process may not actually detect the context loss in the | 843 // the GPU process may not actually detect the context loss in the |
845 // offscreen context. | 844 // offscreen context. |
846 BlockLiveOffscreenContexts(); | 845 BlockLiveOffscreenContexts(); |
847 return; | 846 return; |
848 } | 847 } |
849 | 848 |
850 GpuDataManagerImpl::DomainGuilt guilt; | 849 GpuDataManagerImpl::DomainGuilt guilt; |
851 switch (reason) { | 850 switch (reason) { |
852 case gpu::error::kGuilty: | 851 case gpu::error::kGuilty: |
853 guilt = GpuDataManagerImpl::DOMAIN_GUILT_KNOWN; | 852 guilt = GpuDataManagerImpl::DOMAIN_GUILT_KNOWN; |
854 break; | 853 break; |
855 case gpu::error::kUnknown: | 854 case gpu::error::kUnknown: |
856 guilt = GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN; | 855 guilt = GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN; |
857 break; | 856 break; |
858 case gpu::error::kInnocent: | 857 case gpu::error::kInnocent: |
859 return; | 858 return; |
860 default: | 859 default: |
861 NOTREACHED(); | 860 NOTREACHED(); |
862 return; | 861 return; |
863 } | 862 } |
864 | 863 |
865 GpuDataManagerImpl::GetInstance()->BlockDomainFrom3DAPIs(url, guilt); | 864 GpuDataManagerImpl::GetInstance()->BlockDomainFrom3DAPIs(gurl, guilt); |
866 } | 865 } |
867 | 866 |
868 void GpuProcessHost::OnDidDestroyOffscreenContext(const GURL& url) { | 867 void GpuProcessHost::OnDidDestroyOffscreenContext(const std::string& url) { |
869 urls_with_live_offscreen_contexts_.erase(url); | 868 urls_with_live_offscreen_contexts_.erase(GURL(url)); |
870 } | 869 } |
871 | 870 |
872 void GpuProcessHost::OnGpuMemoryUmaStatsReceived( | 871 void GpuProcessHost::OnGpuMemoryUmaStatsReceived( |
873 const GPUMemoryUmaStats& stats) { | 872 const GPUMemoryUmaStats& stats) { |
874 TRACE_EVENT0("gpu", "GpuProcessHost::OnGpuMemoryUmaStatsReceived"); | 873 TRACE_EVENT0("gpu", "GpuProcessHost::OnGpuMemoryUmaStatsReceived"); |
875 uma_memory_stats_received_ = true; | 874 uma_memory_stats_received_ = true; |
876 uma_memory_stats_ = stats; | 875 uma_memory_stats_ = stats; |
877 } | 876 } |
878 | 877 |
879 #if defined(OS_MACOSX) | 878 #if defined(OS_MACOSX) |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1147 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); | 1146 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); |
1148 ClientIdToShaderCacheMap::iterator iter = | 1147 ClientIdToShaderCacheMap::iterator iter = |
1149 client_id_to_shader_cache_.find(client_id); | 1148 client_id_to_shader_cache_.find(client_id); |
1150 // If the cache doesn't exist then this is an off the record profile. | 1149 // If the cache doesn't exist then this is an off the record profile. |
1151 if (iter == client_id_to_shader_cache_.end()) | 1150 if (iter == client_id_to_shader_cache_.end()) |
1152 return; | 1151 return; |
1153 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); | 1152 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); |
1154 } | 1153 } |
1155 | 1154 |
1156 } // namespace content | 1155 } // namespace content |
OLD | NEW |