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

Side by Side Diff: cc/output/gl_renderer.cc

Issue 1131253003: cc: Add support for non-2D texture targets to YUVVideoQuad. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: invert scale Created 5 years, 7 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
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 1884 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired( 1895 TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired(
1896 gl_, 1896 gl_,
1897 &highp_threshold_cache_, 1897 &highp_threshold_cache_,
1898 highp_threshold_min_, 1898 highp_threshold_min_,
1899 quad->shared_quad_state->visible_content_rect.bottom_right()); 1899 quad->shared_quad_state->visible_content_rect.bottom_right());
1900 1900
1901 bool use_alpha_plane = quad->a_plane_resource_id != 0; 1901 bool use_alpha_plane = quad->a_plane_resource_id != 0;
1902 1902
1903 ResourceProvider::ScopedSamplerGL y_plane_lock( 1903 ResourceProvider::ScopedSamplerGL y_plane_lock(
1904 resource_provider_, quad->y_plane_resource_id, GL_TEXTURE1, GL_LINEAR); 1904 resource_provider_, quad->y_plane_resource_id, GL_TEXTURE1, GL_LINEAR);
1905 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), y_plane_lock.target());
1906 ResourceProvider::ScopedSamplerGL u_plane_lock( 1905 ResourceProvider::ScopedSamplerGL u_plane_lock(
1907 resource_provider_, quad->u_plane_resource_id, GL_TEXTURE2, GL_LINEAR); 1906 resource_provider_, quad->u_plane_resource_id, GL_TEXTURE2, GL_LINEAR);
1908 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), u_plane_lock.target()); 1907 DCHECK_EQ(y_plane_lock.target(), u_plane_lock.target());
1909 ResourceProvider::ScopedSamplerGL v_plane_lock( 1908 ResourceProvider::ScopedSamplerGL v_plane_lock(
1910 resource_provider_, quad->v_plane_resource_id, GL_TEXTURE3, GL_LINEAR); 1909 resource_provider_, quad->v_plane_resource_id, GL_TEXTURE3, GL_LINEAR);
1911 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), v_plane_lock.target()); 1910 DCHECK_EQ(y_plane_lock.target(), v_plane_lock.target());
1912 scoped_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock; 1911 scoped_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock;
1913 if (use_alpha_plane) { 1912 if (use_alpha_plane) {
1914 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL( 1913 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL(
1915 resource_provider_, quad->a_plane_resource_id, GL_TEXTURE4, GL_LINEAR)); 1914 resource_provider_, quad->a_plane_resource_id, GL_TEXTURE4, GL_LINEAR));
1916 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), a_plane_lock->target()); 1915 DCHECK_EQ(y_plane_lock.target(), a_plane_lock->target());
1917 } 1916 }
1918 1917
1918 // All planes must have the same sampler type.
1919 SamplerType sampler = SamplerTypeFromTextureTarget(y_plane_lock.target());
1920
1919 int matrix_location = -1; 1921 int matrix_location = -1;
1920 int tex_scale_location = -1; 1922 int ya_tex_scale_location = -1;
1921 int tex_offset_location = -1; 1923 int ya_tex_offset_location = -1;
1924 int uv_tex_scale_location = -1;
1925 int uv_tex_offset_location = -1;
1922 int ya_clamp_rect_location = -1; 1926 int ya_clamp_rect_location = -1;
1923 int uv_clamp_rect_location = -1; 1927 int uv_clamp_rect_location = -1;
1924 int y_texture_location = -1; 1928 int y_texture_location = -1;
1925 int u_texture_location = -1; 1929 int u_texture_location = -1;
1926 int v_texture_location = -1; 1930 int v_texture_location = -1;
1927 int a_texture_location = -1; 1931 int a_texture_location = -1;
1928 int yuv_matrix_location = -1; 1932 int yuv_matrix_location = -1;
1929 int yuv_adj_location = -1; 1933 int yuv_adj_location = -1;
1930 int alpha_location = -1; 1934 int alpha_location = -1;
1931 if (use_alpha_plane) { 1935 if (use_alpha_plane) {
1932 const VideoYUVAProgram* program = GetVideoYUVAProgram(tex_coord_precision); 1936 const VideoYUVAProgram* program =
1937 GetVideoYUVAProgram(tex_coord_precision, sampler);
1933 DCHECK(program && (program->initialized() || IsContextLost())); 1938 DCHECK(program && (program->initialized() || IsContextLost()));
1934 SetUseProgram(program->program()); 1939 SetUseProgram(program->program());
1935 matrix_location = program->vertex_shader().matrix_location(); 1940 matrix_location = program->vertex_shader().matrix_location();
1936 tex_scale_location = program->vertex_shader().tex_scale_location(); 1941 ya_tex_scale_location = program->vertex_shader().ya_tex_scale_location();
1937 tex_offset_location = program->vertex_shader().tex_offset_location(); 1942 ya_tex_offset_location = program->vertex_shader().ya_tex_offset_location();
1943 uv_tex_scale_location = program->vertex_shader().uv_tex_scale_location();
1944 uv_tex_offset_location = program->vertex_shader().uv_tex_offset_location();
1938 y_texture_location = program->fragment_shader().y_texture_location(); 1945 y_texture_location = program->fragment_shader().y_texture_location();
1939 u_texture_location = program->fragment_shader().u_texture_location(); 1946 u_texture_location = program->fragment_shader().u_texture_location();
1940 v_texture_location = program->fragment_shader().v_texture_location(); 1947 v_texture_location = program->fragment_shader().v_texture_location();
1941 a_texture_location = program->fragment_shader().a_texture_location(); 1948 a_texture_location = program->fragment_shader().a_texture_location();
hendrikw 2015/05/11 23:22:20 This if/else is getting long, and only 2 lines dif
reveman 2015/05/11 23:35:01 The program types are different so we'd need add s
1942 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); 1949 yuv_matrix_location = program->fragment_shader().yuv_matrix_location();
1943 yuv_adj_location = program->fragment_shader().yuv_adj_location(); 1950 yuv_adj_location = program->fragment_shader().yuv_adj_location();
1944 ya_clamp_rect_location = 1951 ya_clamp_rect_location =
1945 program->fragment_shader().ya_clamp_rect_location(); 1952 program->fragment_shader().ya_clamp_rect_location();
1946 uv_clamp_rect_location = 1953 uv_clamp_rect_location =
1947 program->fragment_shader().uv_clamp_rect_location(); 1954 program->fragment_shader().uv_clamp_rect_location();
1948 alpha_location = program->fragment_shader().alpha_location(); 1955 alpha_location = program->fragment_shader().alpha_location();
1949 } else { 1956 } else {
1950 const VideoYUVProgram* program = GetVideoYUVProgram(tex_coord_precision); 1957 const VideoYUVProgram* program =
1958 GetVideoYUVProgram(tex_coord_precision, sampler);
1951 DCHECK(program && (program->initialized() || IsContextLost())); 1959 DCHECK(program && (program->initialized() || IsContextLost()));
1952 SetUseProgram(program->program()); 1960 SetUseProgram(program->program());
1953 matrix_location = program->vertex_shader().matrix_location(); 1961 matrix_location = program->vertex_shader().matrix_location();
1954 tex_scale_location = program->vertex_shader().tex_scale_location(); 1962 ya_tex_scale_location = program->vertex_shader().ya_tex_scale_location();
1955 tex_offset_location = program->vertex_shader().tex_offset_location(); 1963 ya_tex_offset_location = program->vertex_shader().ya_tex_offset_location();
1964 uv_tex_scale_location = program->vertex_shader().uv_tex_scale_location();
1965 uv_tex_offset_location = program->vertex_shader().uv_tex_offset_location();
1956 y_texture_location = program->fragment_shader().y_texture_location(); 1966 y_texture_location = program->fragment_shader().y_texture_location();
1957 u_texture_location = program->fragment_shader().u_texture_location(); 1967 u_texture_location = program->fragment_shader().u_texture_location();
1958 v_texture_location = program->fragment_shader().v_texture_location(); 1968 v_texture_location = program->fragment_shader().v_texture_location();
1959 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); 1969 yuv_matrix_location = program->fragment_shader().yuv_matrix_location();
1960 yuv_adj_location = program->fragment_shader().yuv_adj_location(); 1970 yuv_adj_location = program->fragment_shader().yuv_adj_location();
1961 ya_clamp_rect_location = 1971 ya_clamp_rect_location =
1962 program->fragment_shader().ya_clamp_rect_location(); 1972 program->fragment_shader().ya_clamp_rect_location();
1963 uv_clamp_rect_location = 1973 uv_clamp_rect_location =
1964 program->fragment_shader().uv_clamp_rect_location(); 1974 program->fragment_shader().uv_clamp_rect_location();
1965 alpha_location = program->fragment_shader().alpha_location(); 1975 alpha_location = program->fragment_shader().alpha_location();
1966 } 1976 }
1967 1977
1968 gl_->Uniform2f(tex_scale_location, quad->tex_coord_rect.width(), 1978 gfx::SizeF ya_tex_scale(1, 1);
1969 quad->tex_coord_rect.height()); 1979 gfx::SizeF uv_tex_scale(1, 1);
1970 gl_->Uniform2f(tex_offset_location, quad->tex_coord_rect.x(), 1980 if (sampler != SAMPLER_TYPE_2D_RECT) {
1971 quad->tex_coord_rect.y()); 1981 DCHECK(!quad->ya_tex_size.IsEmpty());
1972 // Clamping to half a texel inside the tex coord rect prevents bilinear 1982 DCHECK(!quad->uv_tex_size.IsEmpty());
1973 // filtering from filtering outside the tex coord rect. 1983 ya_tex_scale.Scale(1.0f / quad->ya_tex_size.width(),
danakj 2015/05/12 16:32:12 you're scaling 1 by this, you could just say = gfx
reveman 2015/05/12 17:09:36 Done.
1974 gfx::RectF ya_clamp_rect(quad->tex_coord_rect); 1984 1.0f / quad->ya_tex_size.height());
1975 // Special case: empty texture size implies no clamping. 1985 uv_tex_scale.Scale(1.0f / quad->uv_tex_size.width(),
1976 if (!quad->ya_tex_size.IsEmpty()) { 1986 1.0f / quad->uv_tex_size.height());
1977 ya_clamp_rect.Inset(0.5f / quad->ya_tex_size.width(),
1978 0.5f / quad->ya_tex_size.height());
1979 } 1987 }
1980 gfx::RectF uv_clamp_rect(quad->tex_coord_rect); 1988
1981 if (!quad->uv_tex_size.IsEmpty()) { 1989 float ya_vertex_tex_translate_x =
1982 uv_clamp_rect.Inset(0.5f / quad->uv_tex_size.width(), 1990 quad->ya_tex_coord_rect.x() * ya_tex_scale.width();
1983 0.5f / quad->uv_tex_size.height()); 1991 float ya_vertex_tex_translate_y =
1984 } 1992 quad->ya_tex_coord_rect.y() * ya_tex_scale.height();
1993 float ya_vertex_tex_scale_x =
1994 quad->ya_tex_coord_rect.width() * ya_tex_scale.width();
1995 float ya_vertex_tex_scale_y =
1996 quad->ya_tex_coord_rect.height() * ya_tex_scale.height();
1997
1998 float uv_vertex_tex_translate_x =
1999 quad->uv_tex_coord_rect.x() * uv_tex_scale.width();
2000 float uv_vertex_tex_translate_y =
2001 quad->uv_tex_coord_rect.y() * uv_tex_scale.height();
2002 float uv_vertex_tex_scale_x =
2003 quad->uv_tex_coord_rect.width() * uv_tex_scale.width();
2004 float uv_vertex_tex_scale_y =
2005 quad->uv_tex_coord_rect.height() * uv_tex_scale.height();
2006
2007 gl_->Uniform2f(ya_tex_scale_location, ya_vertex_tex_scale_x,
2008 ya_vertex_tex_scale_y);
2009 gl_->Uniform2f(ya_tex_offset_location, ya_vertex_tex_translate_x,
2010 ya_vertex_tex_translate_y);
2011 gl_->Uniform2f(uv_tex_scale_location, uv_vertex_tex_scale_x,
2012 uv_vertex_tex_scale_y);
2013 gl_->Uniform2f(uv_tex_offset_location, uv_vertex_tex_translate_x,
2014 uv_vertex_tex_translate_y);
2015
2016 gfx::RectF ya_clamp_rect(ya_vertex_tex_translate_x, ya_vertex_tex_translate_y,
2017 ya_vertex_tex_scale_x, ya_vertex_tex_scale_y);
2018 ya_clamp_rect.Inset(0.5f * ya_tex_scale.width(),
2019 0.5f * ya_tex_scale.height());
2020 gfx::RectF uv_clamp_rect(uv_vertex_tex_translate_x, uv_vertex_tex_translate_y,
2021 uv_vertex_tex_scale_x, uv_vertex_tex_scale_y);
2022 uv_clamp_rect.Inset(0.5f * uv_tex_scale.width(),
2023 0.5f * uv_tex_scale.height());
1985 gl_->Uniform4f(ya_clamp_rect_location, ya_clamp_rect.x(), ya_clamp_rect.y(), 2024 gl_->Uniform4f(ya_clamp_rect_location, ya_clamp_rect.x(), ya_clamp_rect.y(),
1986 ya_clamp_rect.right(), ya_clamp_rect.bottom()); 2025 ya_clamp_rect.right(), ya_clamp_rect.bottom());
1987 gl_->Uniform4f(uv_clamp_rect_location, uv_clamp_rect.x(), uv_clamp_rect.y(), 2026 gl_->Uniform4f(uv_clamp_rect_location, uv_clamp_rect.x(), uv_clamp_rect.y(),
1988 uv_clamp_rect.right(), uv_clamp_rect.bottom()); 2027 uv_clamp_rect.right(), uv_clamp_rect.bottom());
1989 2028
1990 gl_->Uniform1i(y_texture_location, 1); 2029 gl_->Uniform1i(y_texture_location, 1);
1991 gl_->Uniform1i(u_texture_location, 2); 2030 gl_->Uniform1i(u_texture_location, 2);
1992 gl_->Uniform1i(v_texture_location, 3); 2031 gl_->Uniform1i(v_texture_location, 3);
1993 if (use_alpha_plane) 2032 if (use_alpha_plane)
1994 gl_->Uniform1i(a_texture_location, 4); 2033 gl_->Uniform1i(a_texture_location, 4);
(...skipping 1264 matching lines...) Expand 10 before | Expand all | Expand 10 after
3259 TextureProgram* program = &texture_io_surface_program_[precision]; 3298 TextureProgram* program = &texture_io_surface_program_[precision];
3260 if (!program->initialized()) { 3299 if (!program->initialized()) {
3261 TRACE_EVENT0("cc", "GLRenderer::textureIOSurfaceProgram::initialize"); 3300 TRACE_EVENT0("cc", "GLRenderer::textureIOSurfaceProgram::initialize");
3262 program->Initialize(output_surface_->context_provider(), precision, 3301 program->Initialize(output_surface_->context_provider(), precision,
3263 SAMPLER_TYPE_2D_RECT); 3302 SAMPLER_TYPE_2D_RECT);
3264 } 3303 }
3265 return program; 3304 return program;
3266 } 3305 }
3267 3306
3268 const GLRenderer::VideoYUVProgram* GLRenderer::GetVideoYUVProgram( 3307 const GLRenderer::VideoYUVProgram* GLRenderer::GetVideoYUVProgram(
3269 TexCoordPrecision precision) { 3308 TexCoordPrecision precision,
3309 SamplerType sampler) {
3270 DCHECK_GE(precision, 0); 3310 DCHECK_GE(precision, 0);
3271 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); 3311 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION);
3272 VideoYUVProgram* program = &video_yuv_program_[precision]; 3312 DCHECK_GE(sampler, 0);
3313 DCHECK_LE(sampler, LAST_SAMPLER_TYPE);
3314 VideoYUVProgram* program = &video_yuv_program_[precision][sampler];
3273 if (!program->initialized()) { 3315 if (!program->initialized()) {
3274 TRACE_EVENT0("cc", "GLRenderer::videoYUVProgram::initialize"); 3316 TRACE_EVENT0("cc", "GLRenderer::videoYUVProgram::initialize");
3275 program->Initialize(output_surface_->context_provider(), precision, 3317 program->Initialize(output_surface_->context_provider(), precision,
3276 SAMPLER_TYPE_2D); 3318 sampler);
3277 } 3319 }
3278 return program; 3320 return program;
3279 } 3321 }
3280 3322
3281 const GLRenderer::VideoYUVAProgram* GLRenderer::GetVideoYUVAProgram( 3323 const GLRenderer::VideoYUVAProgram* GLRenderer::GetVideoYUVAProgram(
3282 TexCoordPrecision precision) { 3324 TexCoordPrecision precision,
3325 SamplerType sampler) {
3283 DCHECK_GE(precision, 0); 3326 DCHECK_GE(precision, 0);
3284 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); 3327 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION);
3285 VideoYUVAProgram* program = &video_yuva_program_[precision]; 3328 DCHECK_GE(sampler, 0);
3329 DCHECK_LE(sampler, LAST_SAMPLER_TYPE);
3330 VideoYUVAProgram* program = &video_yuva_program_[precision][sampler];
3286 if (!program->initialized()) { 3331 if (!program->initialized()) {
3287 TRACE_EVENT0("cc", "GLRenderer::videoYUVAProgram::initialize"); 3332 TRACE_EVENT0("cc", "GLRenderer::videoYUVAProgram::initialize");
3288 program->Initialize(output_surface_->context_provider(), precision, 3333 program->Initialize(output_surface_->context_provider(), precision,
3289 SAMPLER_TYPE_2D); 3334 sampler);
3290 } 3335 }
3291 return program; 3336 return program;
3292 } 3337 }
3293 3338
3294 const GLRenderer::VideoStreamTextureProgram* 3339 const GLRenderer::VideoStreamTextureProgram*
3295 GLRenderer::GetVideoStreamTextureProgram(TexCoordPrecision precision) { 3340 GLRenderer::GetVideoStreamTextureProgram(TexCoordPrecision precision) {
3296 if (!Capabilities().using_egl_image) 3341 if (!Capabilities().using_egl_image)
3297 return NULL; 3342 return NULL;
3298 DCHECK_GE(precision, 0); 3343 DCHECK_GE(precision, 0);
3299 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); 3344 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION);
(...skipping 20 matching lines...) Expand all
3320 tile_program_swizzle_aa_[i][j].Cleanup(gl_); 3365 tile_program_swizzle_aa_[i][j].Cleanup(gl_);
3321 3366
3322 for (int k = 0; k <= LAST_BLEND_MODE; k++) { 3367 for (int k = 0; k <= LAST_BLEND_MODE; k++) {
3323 for (int l = 0; l <= LAST_MASK_VALUE; ++l) { 3368 for (int l = 0; l <= LAST_MASK_VALUE; ++l) {
3324 render_pass_mask_program_[i][j][k][l].Cleanup(gl_); 3369 render_pass_mask_program_[i][j][k][l].Cleanup(gl_);
3325 render_pass_mask_program_aa_[i][j][k][l].Cleanup(gl_); 3370 render_pass_mask_program_aa_[i][j][k][l].Cleanup(gl_);
3326 render_pass_mask_color_matrix_program_aa_[i][j][k][l].Cleanup(gl_); 3371 render_pass_mask_color_matrix_program_aa_[i][j][k][l].Cleanup(gl_);
3327 render_pass_mask_color_matrix_program_[i][j][k][l].Cleanup(gl_); 3372 render_pass_mask_color_matrix_program_[i][j][k][l].Cleanup(gl_);
3328 } 3373 }
3329 } 3374 }
3375
3376 video_yuv_program_[i][j].Cleanup(gl_);
3377 video_yuva_program_[i][j].Cleanup(gl_);
3330 } 3378 }
3331 for (int j = 0; j <= LAST_BLEND_MODE; j++) { 3379 for (int j = 0; j <= LAST_BLEND_MODE; j++) {
3332 render_pass_program_[i][j].Cleanup(gl_); 3380 render_pass_program_[i][j].Cleanup(gl_);
3333 render_pass_program_aa_[i][j].Cleanup(gl_); 3381 render_pass_program_aa_[i][j].Cleanup(gl_);
3334 render_pass_color_matrix_program_[i][j].Cleanup(gl_); 3382 render_pass_color_matrix_program_[i][j].Cleanup(gl_);
3335 render_pass_color_matrix_program_aa_[i][j].Cleanup(gl_); 3383 render_pass_color_matrix_program_aa_[i][j].Cleanup(gl_);
3336 } 3384 }
3337 3385
3338 texture_program_[i].Cleanup(gl_); 3386 texture_program_[i].Cleanup(gl_);
3339 nonpremultiplied_texture_program_[i].Cleanup(gl_); 3387 nonpremultiplied_texture_program_[i].Cleanup(gl_);
3340 texture_background_program_[i].Cleanup(gl_); 3388 texture_background_program_[i].Cleanup(gl_);
3341 nonpremultiplied_texture_background_program_[i].Cleanup(gl_); 3389 nonpremultiplied_texture_background_program_[i].Cleanup(gl_);
3342 texture_io_surface_program_[i].Cleanup(gl_); 3390 texture_io_surface_program_[i].Cleanup(gl_);
3343 3391
3344 video_yuv_program_[i].Cleanup(gl_);
3345 video_yuva_program_[i].Cleanup(gl_);
3346 video_stream_texture_program_[i].Cleanup(gl_); 3392 video_stream_texture_program_[i].Cleanup(gl_);
3347 } 3393 }
3348 3394
3349 tile_checkerboard_program_.Cleanup(gl_); 3395 tile_checkerboard_program_.Cleanup(gl_);
3350 3396
3351 debug_border_program_.Cleanup(gl_); 3397 debug_border_program_.Cleanup(gl_);
3352 solid_color_program_.Cleanup(gl_); 3398 solid_color_program_.Cleanup(gl_);
3353 solid_color_program_aa_.Cleanup(gl_); 3399 solid_color_program_aa_.Cleanup(gl_);
3354 3400
3355 if (offscreen_framebuffer_id_) 3401 if (offscreen_framebuffer_id_)
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
3435 context_support_->ScheduleOverlayPlane( 3481 context_support_->ScheduleOverlayPlane(
3436 overlay.plane_z_order, 3482 overlay.plane_z_order,
3437 overlay.transform, 3483 overlay.transform,
3438 pending_overlay_resources_.back()->texture_id(), 3484 pending_overlay_resources_.back()->texture_id(),
3439 ToNearestRect(overlay.display_rect), 3485 ToNearestRect(overlay.display_rect),
3440 overlay.uv_rect); 3486 overlay.uv_rect);
3441 } 3487 }
3442 } 3488 }
3443 3489
3444 } // namespace cc 3490 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698