Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Side by Side Diff: content/common/gpu/media/android_deferred_rendering_backing_strategy.cc

Issue 1814703002: AVDA: Use the SurfaceTexture matrix when copying on destruction (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/common/gpu/media/android_copying_backing_strategy.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/common/gpu/media/android_deferred_rendering_backing_strategy.h " 5 #include "content/common/gpu/media/android_deferred_rendering_backing_strategy.h "
6 6
7 #include <EGL/egl.h> 7 #include <EGL/egl.h>
8 #include <EGL/eglext.h> 8 #include <EGL/eglext.h>
9 9
10 #include "base/android/build_info.h" 10 #include "base/android/build_info.h"
(...skipping 12 matching lines...) Expand all
23 #include "gpu/command_buffer/service/texture_manager.h" 23 #include "gpu/command_buffer/service/texture_manager.h"
24 #include "ui/gl/android/surface_texture.h" 24 #include "ui/gl/android/surface_texture.h"
25 #include "ui/gl/egl_util.h" 25 #include "ui/gl/egl_util.h"
26 #include "ui/gl/gl_bindings.h" 26 #include "ui/gl/gl_bindings.h"
27 #include "ui/gl/gl_surface_egl.h" 27 #include "ui/gl/gl_surface_egl.h"
28 #include "ui/gl/scoped_binders.h" 28 #include "ui/gl/scoped_binders.h"
29 #include "ui/gl/scoped_make_current.h" 29 #include "ui/gl/scoped_make_current.h"
30 30
31 namespace content { 31 namespace content {
32 32
33 namespace {
34 // clang-format off
35 const float kIdentityMatrix[16] = {1.0f, 0.0f, 0.0f, 0.0f,
36 0.0f, 1.0f, 0.0f, 0.0f,
37 0.0f, 0.0f, 1.0f, 0.0f,
38 0.0f, 0.0f, 0.0f, 1.0f};
39 // clang-format on
40 }
41
42 AndroidDeferredRenderingBackingStrategy:: 33 AndroidDeferredRenderingBackingStrategy::
43 AndroidDeferredRenderingBackingStrategy(AVDAStateProvider* state_provider) 34 AndroidDeferredRenderingBackingStrategy(AVDAStateProvider* state_provider)
44 : state_provider_(state_provider), media_codec_(nullptr) {} 35 : state_provider_(state_provider), media_codec_(nullptr) {}
45 36
46 AndroidDeferredRenderingBackingStrategy:: 37 AndroidDeferredRenderingBackingStrategy::
47 ~AndroidDeferredRenderingBackingStrategy() {} 38 ~AndroidDeferredRenderingBackingStrategy() {}
48 39
49 gfx::ScopedJavaSurface AndroidDeferredRenderingBackingStrategy::Initialize( 40 gfx::ScopedJavaSurface AndroidDeferredRenderingBackingStrategy::Initialize(
50 int surface_view_id) { 41 int surface_view_id) {
51 shared_state_ = new AVDASharedState(); 42 shared_state_ = new AVDASharedState();
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 gfx::ScopedTextureBinder texture_binder(GL_TEXTURE_2D, tmp_texture_id); 280 gfx::ScopedTextureBinder texture_binder(GL_TEXTURE_2D, tmp_texture_id);
290 // The target texture's size will exactly match the source. 281 // The target texture's size will exactly match the source.
291 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 282 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
292 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 283 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
293 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 284 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
294 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 285 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
295 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.width(), size.height(), 0, 286 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.width(), size.height(), 0,
296 GL_RGBA, GL_UNSIGNED_BYTE, nullptr); 287 GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
297 } 288 }
298 289
299 // TODO(liberato,watk): Use the SurfaceTexture matrix when copying. 290
291
292 float transform_matrix[16];
293 surface_texture_->GetTransformMatrix(transform_matrix);
294
300 gpu::CopyTextureCHROMIUMResourceManager copier; 295 gpu::CopyTextureCHROMIUMResourceManager copier;
301 copier.Initialize( 296 copier.Initialize(
302 gl_decoder, 297 gl_decoder,
303 gl_decoder->GetContextGroup()->feature_info()->feature_flags()); 298 gl_decoder->GetContextGroup()->feature_info()->feature_flags());
304 copier.DoCopyTextureWithTransform(gl_decoder, GL_TEXTURE_EXTERNAL_OES, 299 copier.DoCopyTextureWithTransform(gl_decoder, GL_TEXTURE_EXTERNAL_OES,
305 shared_state_->surface_texture_service_id(), 300 shared_state_->surface_texture_service_id(),
306 GL_TEXTURE_2D, tmp_texture_id, size.width(), 301 GL_TEXTURE_2D, tmp_texture_id, size.width(),
307 size.height(), false, false, false, 302 size.height(), true, false, false,
308 kIdentityMatrix); 303 transform_matrix);
309 304
310 // Create an EGLImage from the 2D texture we just copied into. By associating 305 // Create an EGLImage from the 2D texture we just copied into. By associating
311 // the EGLImage with the PictureBuffer textures they will remain valid even 306 // the EGLImage with the PictureBuffer textures they will remain valid even
312 // after we delete the 2D texture and EGLImage. 307 // after we delete the 2D texture and EGLImage.
313 const EGLImageKHR egl_image = eglCreateImageKHR( 308 const EGLImageKHR egl_image = eglCreateImageKHR(
314 gfx::GLSurfaceEGL::GetHardwareDisplay(), eglGetCurrentContext(), 309 gfx::GLSurfaceEGL::GetHardwareDisplay(), eglGetCurrentContext(),
315 EGL_GL_TEXTURE_2D_KHR, reinterpret_cast<EGLClientBuffer>(tmp_texture_id), 310 EGL_GL_TEXTURE_2D_KHR, reinterpret_cast<EGLClientBuffer>(tmp_texture_id),
316 nullptr /* attrs */); 311 nullptr /* attrs */);
317 312
318 glDeleteTextures(1, &tmp_texture_id); 313 glDeleteTextures(1, &tmp_texture_id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 base::ToLowerASCII(base::android::BuildInfo::GetInstance()->model())); 361 base::ToLowerASCII(base::android::BuildInfo::GetInstance()->model()));
367 if (model.find("a114") != std::string::npos) 362 if (model.find("a114") != std::string::npos)
368 surface_texture_detach_works = false; 363 surface_texture_detach_works = false;
369 } 364 }
370 } 365 }
371 366
372 return surface_texture_detach_works; 367 return surface_texture_detach_works;
373 } 368 }
374 369
375 } // namespace content 370 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/media/android_copying_backing_strategy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698