| 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 "content/renderer/media/renderer_gpu_video_accelerator_factories.h" | 5 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h" |
| 6 | 6 |
| 7 #include <GLES2/gl2.h> | 7 #include <GLES2/gl2.h> |
| 8 #include <GLES2/gl2ext.h> | 8 #include <GLES2/gl2ext.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 scoped_ptr<media::VideoEncodeAccelerator> | 99 scoped_ptr<media::VideoEncodeAccelerator> |
| 100 RendererGpuVideoAcceleratorFactories::CreateVideoEncodeAccelerator() { | 100 RendererGpuVideoAcceleratorFactories::CreateVideoEncodeAccelerator() { |
| 101 DCHECK(video_accelerator_enabled_); | 101 DCHECK(video_accelerator_enabled_); |
| 102 DCHECK(task_runner_->BelongsToCurrentThread()); | 102 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 103 if (CheckContextLost()) | 103 if (CheckContextLost()) |
| 104 return nullptr; | 104 return nullptr; |
| 105 return context_provider_->GetCommandBufferProxy()->CreateVideoEncoder(); | 105 return context_provider_->GetCommandBufferProxy()->CreateVideoEncoder(); |
| 106 } | 106 } |
| 107 | 107 |
| 108 bool RendererGpuVideoAcceleratorFactories::CreateTextures( | 108 bool RendererGpuVideoAcceleratorFactories::CreateTextures( |
| 109 int32 count, | 109 int32_t count, |
| 110 const gfx::Size& size, | 110 const gfx::Size& size, |
| 111 std::vector<uint32>* texture_ids, | 111 std::vector<uint32_t>* texture_ids, |
| 112 std::vector<gpu::Mailbox>* texture_mailboxes, | 112 std::vector<gpu::Mailbox>* texture_mailboxes, |
| 113 uint32 texture_target) { | 113 uint32_t texture_target) { |
| 114 DCHECK(task_runner_->BelongsToCurrentThread()); | 114 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 115 DCHECK(texture_target); | 115 DCHECK(texture_target); |
| 116 | 116 |
| 117 if (CheckContextLost()) | 117 if (CheckContextLost()) |
| 118 return false; | 118 return false; |
| 119 cc::ContextProvider::ScopedContextLock lock(context_provider_); | 119 cc::ContextProvider::ScopedContextLock lock(context_provider_); |
| 120 gpu::gles2::GLES2Interface* gles2 = lock.ContextGL(); | 120 gpu::gles2::GLES2Interface* gles2 = lock.ContextGL(); |
| 121 texture_ids->resize(count); | 121 texture_ids->resize(count); |
| 122 texture_mailboxes->resize(count); | 122 texture_mailboxes->resize(count); |
| 123 gles2->GenTextures(count, &texture_ids->at(0)); | 123 gles2->GenTextures(count, &texture_ids->at(0)); |
| 124 for (int i = 0; i < count; ++i) { | 124 for (int i = 0; i < count; ++i) { |
| 125 gles2->ActiveTexture(GL_TEXTURE0); | 125 gles2->ActiveTexture(GL_TEXTURE0); |
| 126 uint32 texture_id = texture_ids->at(i); | 126 uint32_t texture_id = texture_ids->at(i); |
| 127 gles2->BindTexture(texture_target, texture_id); | 127 gles2->BindTexture(texture_target, texture_id); |
| 128 gles2->TexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | 128 gles2->TexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
| 129 gles2->TexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 129 gles2->TexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 130 gles2->TexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 130 gles2->TexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
| 131 gles2->TexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | 131 gles2->TexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
| 132 if (texture_target == GL_TEXTURE_2D) { | 132 if (texture_target == GL_TEXTURE_2D) { |
| 133 gles2->TexImage2D(texture_target, | 133 gles2->TexImage2D(texture_target, |
| 134 0, | 134 0, |
| 135 GL_RGBA, | 135 GL_RGBA, |
| 136 size.width(), | 136 size.width(), |
| (...skipping 10 matching lines...) Expand all Loading... |
| 147 | 147 |
| 148 // We need ShallowFlushCHROMIUM() here to order the command buffer commands | 148 // We need ShallowFlushCHROMIUM() here to order the command buffer commands |
| 149 // with respect to IPC to the GPU process, to guarantee that the decoder in | 149 // with respect to IPC to the GPU process, to guarantee that the decoder in |
| 150 // the GPU process can use these textures as soon as it receives IPC | 150 // the GPU process can use these textures as soon as it receives IPC |
| 151 // notification of them. | 151 // notification of them. |
| 152 gles2->ShallowFlushCHROMIUM(); | 152 gles2->ShallowFlushCHROMIUM(); |
| 153 DCHECK_EQ(gles2->GetError(), static_cast<GLenum>(GL_NO_ERROR)); | 153 DCHECK_EQ(gles2->GetError(), static_cast<GLenum>(GL_NO_ERROR)); |
| 154 return true; | 154 return true; |
| 155 } | 155 } |
| 156 | 156 |
| 157 void RendererGpuVideoAcceleratorFactories::DeleteTexture(uint32 texture_id) { | 157 void RendererGpuVideoAcceleratorFactories::DeleteTexture(uint32_t texture_id) { |
| 158 DCHECK(task_runner_->BelongsToCurrentThread()); | 158 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 159 if (CheckContextLost()) | 159 if (CheckContextLost()) |
| 160 return; | 160 return; |
| 161 | 161 |
| 162 cc::ContextProvider::ScopedContextLock lock(context_provider_); | 162 cc::ContextProvider::ScopedContextLock lock(context_provider_); |
| 163 gpu::gles2::GLES2Interface* gles2 = lock.ContextGL(); | 163 gpu::gles2::GLES2Interface* gles2 = lock.ContextGL(); |
| 164 gles2->DeleteTextures(1, &texture_id); | 164 gles2->DeleteTextures(1, &texture_id); |
| 165 DCHECK_EQ(gles2->GetError(), static_cast<GLenum>(GL_NO_ERROR)); | 165 DCHECK_EQ(gles2->GetError(), static_cast<GLenum>(GL_NO_ERROR)); |
| 166 } | 166 } |
| 167 | 167 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 gpu_channel_host_->gpu_info() | 259 gpu_channel_host_->gpu_info() |
| 260 .video_encode_accelerator_supported_profiles); | 260 .video_encode_accelerator_supported_profiles); |
| 261 } | 261 } |
| 262 | 262 |
| 263 void RendererGpuVideoAcceleratorFactories::ReleaseContextProvider() { | 263 void RendererGpuVideoAcceleratorFactories::ReleaseContextProvider() { |
| 264 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); | 264 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); |
| 265 context_provider_refptr_ = nullptr; | 265 context_provider_refptr_ = nullptr; |
| 266 } | 266 } |
| 267 | 267 |
| 268 } // namespace content | 268 } // namespace content |
| OLD | NEW |