| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
| 9 #include "base/hash.h" | 9 #include "base/hash.h" |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnRegisterGpuMemoryBuffer"); | 959 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnRegisterGpuMemoryBuffer"); |
| 960 #if defined(OS_ANDROID) | 960 #if defined(OS_ANDROID) |
| 961 // Verify that renderer is not trying to use a surface texture it doesn't own. | 961 // Verify that renderer is not trying to use a surface texture it doesn't own. |
| 962 if (handle.type == gfx::SURFACE_TEXTURE_BUFFER && | 962 if (handle.type == gfx::SURFACE_TEXTURE_BUFFER && |
| 963 handle.surface_texture_id.secondary_id != channel()->client_id()) { | 963 handle.surface_texture_id.secondary_id != channel()->client_id()) { |
| 964 LOG(ERROR) << "Illegal surface texture ID for renderer."; | 964 LOG(ERROR) << "Illegal surface texture ID for renderer."; |
| 965 return; | 965 return; |
| 966 } | 966 } |
| 967 #endif | 967 #endif |
| 968 | 968 |
| 969 if (!decoder_) |
| 970 return; |
| 971 |
| 972 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); |
| 973 DCHECK(image_manager); |
| 974 if (image_manager->LookupImage(id)) { |
| 975 LOG(ERROR) << "Image already exists with same ID."; |
| 976 return; |
| 977 } |
| 978 |
| 969 GpuChannelManager* manager = channel_->gpu_channel_manager(); | 979 GpuChannelManager* manager = channel_->gpu_channel_manager(); |
| 970 scoped_refptr<gfx::GLImage> image = | 980 scoped_refptr<gfx::GLImage> image = |
| 971 manager->gpu_memory_buffer_factory()->CreateImageForGpuMemoryBuffer( | 981 manager->gpu_memory_buffer_factory()->CreateImageForGpuMemoryBuffer( |
| 972 handle, | 982 handle, |
| 973 gfx::Size(width, height), | 983 gfx::Size(width, height), |
| 974 internalformat, | 984 internalformat, |
| 975 channel()->client_id()); | 985 channel()->client_id()); |
| 976 if (!image) | 986 if (!image) |
| 977 return; | 987 return; |
| 978 | 988 |
| 979 // For Android specific workaround. | 989 // For Android specific workaround. |
| 980 if (context_group_->feature_info()->workarounds().release_image_after_use) | 990 if (context_group_->feature_info()->workarounds().release_image_after_use) |
| 981 image->SetReleaseAfterUse(); | 991 image->SetReleaseAfterUse(); |
| 982 | 992 |
| 983 if (decoder_) { | 993 image_manager->AddImage(image.get(), id); |
| 984 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); | |
| 985 DCHECK(image_manager); | |
| 986 image_manager->AddImage(image.get(), id); | |
| 987 } | |
| 988 } | 994 } |
| 989 | 995 |
| 990 void GpuCommandBufferStub::OnUnregisterGpuMemoryBuffer(int32 id) { | 996 void GpuCommandBufferStub::OnUnregisterGpuMemoryBuffer(int32 id) { |
| 991 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnUnregisterGpuMemoryBuffer"); | 997 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnUnregisterGpuMemoryBuffer"); |
| 992 | 998 |
| 993 if (decoder_) { | 999 if (!decoder_) |
| 994 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); | 1000 return; |
| 995 DCHECK(image_manager); | 1001 |
| 996 image_manager->RemoveImage(id); | 1002 gpu::gles2::ImageManager* image_manager = decoder_->GetImageManager(); |
| 1003 DCHECK(image_manager); |
| 1004 if (!image_manager->LookupImage(id)) { |
| 1005 LOG(ERROR) << "Image with ID doesn't exist."; |
| 1006 return; |
| 997 } | 1007 } |
| 1008 |
| 1009 image_manager->RemoveImage(id); |
| 998 } | 1010 } |
| 999 | 1011 |
| 1000 void GpuCommandBufferStub::SendConsoleMessage( | 1012 void GpuCommandBufferStub::SendConsoleMessage( |
| 1001 int32 id, | 1013 int32 id, |
| 1002 const std::string& message) { | 1014 const std::string& message) { |
| 1003 GPUCommandBufferConsoleMessage console_message; | 1015 GPUCommandBufferConsoleMessage console_message; |
| 1004 console_message.id = id; | 1016 console_message.id = id; |
| 1005 console_message.message = message; | 1017 console_message.message = message; |
| 1006 IPC::Message* msg = new GpuCommandBufferMsg_ConsoleMsg( | 1018 IPC::Message* msg = new GpuCommandBufferMsg_ConsoleMsg( |
| 1007 route_id_, console_message); | 1019 route_id_, console_message); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 if (decoder_) | 1101 if (decoder_) |
| 1090 decoder_->LoseContext(GL_UNKNOWN_CONTEXT_RESET_ARB); | 1102 decoder_->LoseContext(GL_UNKNOWN_CONTEXT_RESET_ARB); |
| 1091 command_buffer_->SetParseError(gpu::error::kLostContext); | 1103 command_buffer_->SetParseError(gpu::error::kLostContext); |
| 1092 } | 1104 } |
| 1093 | 1105 |
| 1094 uint64 GpuCommandBufferStub::GetMemoryUsage() const { | 1106 uint64 GpuCommandBufferStub::GetMemoryUsage() const { |
| 1095 return GetMemoryManager()->GetClientMemoryUsage(this); | 1107 return GetMemoryManager()->GetClientMemoryUsage(this); |
| 1096 } | 1108 } |
| 1097 | 1109 |
| 1098 } // namespace content | 1110 } // namespace content |
| OLD | NEW |