OLD | NEW |
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 1885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1896 TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired( | 1896 TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired( |
1897 gl_, | 1897 gl_, |
1898 &highp_threshold_cache_, | 1898 &highp_threshold_cache_, |
1899 highp_threshold_min_, | 1899 highp_threshold_min_, |
1900 quad->shared_quad_state->visible_content_rect.bottom_right()); | 1900 quad->shared_quad_state->visible_content_rect.bottom_right()); |
1901 | 1901 |
1902 bool use_alpha_plane = quad->a_plane_resource_id != 0; | 1902 bool use_alpha_plane = quad->a_plane_resource_id != 0; |
1903 | 1903 |
1904 ResourceProvider::ScopedSamplerGL y_plane_lock( | 1904 ResourceProvider::ScopedSamplerGL y_plane_lock( |
1905 resource_provider_, quad->y_plane_resource_id, GL_TEXTURE1, GL_LINEAR); | 1905 resource_provider_, quad->y_plane_resource_id, GL_TEXTURE1, GL_LINEAR); |
1906 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), y_plane_lock.target()); | |
1907 ResourceProvider::ScopedSamplerGL u_plane_lock( | 1906 ResourceProvider::ScopedSamplerGL u_plane_lock( |
1908 resource_provider_, quad->u_plane_resource_id, GL_TEXTURE2, GL_LINEAR); | 1907 resource_provider_, quad->u_plane_resource_id, GL_TEXTURE2, GL_LINEAR); |
1909 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), u_plane_lock.target()); | 1908 DCHECK_EQ(y_plane_lock.target(), u_plane_lock.target()); |
1910 ResourceProvider::ScopedSamplerGL v_plane_lock( | 1909 ResourceProvider::ScopedSamplerGL v_plane_lock( |
1911 resource_provider_, quad->v_plane_resource_id, GL_TEXTURE3, GL_LINEAR); | 1910 resource_provider_, quad->v_plane_resource_id, GL_TEXTURE3, GL_LINEAR); |
1912 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), v_plane_lock.target()); | 1911 DCHECK_EQ(y_plane_lock.target(), v_plane_lock.target()); |
1913 scoped_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock; | 1912 scoped_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock; |
1914 if (use_alpha_plane) { | 1913 if (use_alpha_plane) { |
1915 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL( | 1914 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL( |
1916 resource_provider_, quad->a_plane_resource_id, GL_TEXTURE4, GL_LINEAR)); | 1915 resource_provider_, quad->a_plane_resource_id, GL_TEXTURE4, GL_LINEAR)); |
1917 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), a_plane_lock->target()); | 1916 DCHECK_EQ(y_plane_lock.target(), a_plane_lock->target()); |
1918 } | 1917 } |
1919 | 1918 |
| 1919 // All planes must have the same sampler type. |
| 1920 SamplerType sampler = SamplerTypeFromTextureTarget(y_plane_lock.target()); |
| 1921 |
1920 int matrix_location = -1; | 1922 int matrix_location = -1; |
1921 int tex_scale_location = -1; | 1923 int ya_tex_scale_location = -1; |
1922 int tex_offset_location = -1; | 1924 int ya_tex_offset_location = -1; |
| 1925 int uv_tex_scale_location = -1; |
| 1926 int uv_tex_offset_location = -1; |
1923 int ya_clamp_rect_location = -1; | 1927 int ya_clamp_rect_location = -1; |
1924 int uv_clamp_rect_location = -1; | 1928 int uv_clamp_rect_location = -1; |
1925 int y_texture_location = -1; | 1929 int y_texture_location = -1; |
1926 int u_texture_location = -1; | 1930 int u_texture_location = -1; |
1927 int v_texture_location = -1; | 1931 int v_texture_location = -1; |
1928 int a_texture_location = -1; | 1932 int a_texture_location = -1; |
1929 int yuv_matrix_location = -1; | 1933 int yuv_matrix_location = -1; |
1930 int yuv_adj_location = -1; | 1934 int yuv_adj_location = -1; |
1931 int alpha_location = -1; | 1935 int alpha_location = -1; |
1932 if (use_alpha_plane) { | 1936 if (use_alpha_plane) { |
1933 const VideoYUVAProgram* program = GetVideoYUVAProgram(tex_coord_precision); | 1937 const VideoYUVAProgram* program = |
| 1938 GetVideoYUVAProgram(tex_coord_precision, sampler); |
1934 DCHECK(program && (program->initialized() || IsContextLost())); | 1939 DCHECK(program && (program->initialized() || IsContextLost())); |
1935 SetUseProgram(program->program()); | 1940 SetUseProgram(program->program()); |
1936 matrix_location = program->vertex_shader().matrix_location(); | 1941 matrix_location = program->vertex_shader().matrix_location(); |
1937 tex_scale_location = program->vertex_shader().tex_scale_location(); | 1942 ya_tex_scale_location = program->vertex_shader().ya_tex_scale_location(); |
1938 tex_offset_location = program->vertex_shader().tex_offset_location(); | 1943 ya_tex_offset_location = program->vertex_shader().ya_tex_offset_location(); |
| 1944 uv_tex_scale_location = program->vertex_shader().uv_tex_scale_location(); |
| 1945 uv_tex_offset_location = program->vertex_shader().uv_tex_offset_location(); |
1939 y_texture_location = program->fragment_shader().y_texture_location(); | 1946 y_texture_location = program->fragment_shader().y_texture_location(); |
1940 u_texture_location = program->fragment_shader().u_texture_location(); | 1947 u_texture_location = program->fragment_shader().u_texture_location(); |
1941 v_texture_location = program->fragment_shader().v_texture_location(); | 1948 v_texture_location = program->fragment_shader().v_texture_location(); |
1942 a_texture_location = program->fragment_shader().a_texture_location(); | 1949 a_texture_location = program->fragment_shader().a_texture_location(); |
1943 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); | 1950 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); |
1944 yuv_adj_location = program->fragment_shader().yuv_adj_location(); | 1951 yuv_adj_location = program->fragment_shader().yuv_adj_location(); |
1945 ya_clamp_rect_location = | 1952 ya_clamp_rect_location = |
1946 program->fragment_shader().ya_clamp_rect_location(); | 1953 program->fragment_shader().ya_clamp_rect_location(); |
1947 uv_clamp_rect_location = | 1954 uv_clamp_rect_location = |
1948 program->fragment_shader().uv_clamp_rect_location(); | 1955 program->fragment_shader().uv_clamp_rect_location(); |
1949 alpha_location = program->fragment_shader().alpha_location(); | 1956 alpha_location = program->fragment_shader().alpha_location(); |
1950 } else { | 1957 } else { |
1951 const VideoYUVProgram* program = GetVideoYUVProgram(tex_coord_precision); | 1958 const VideoYUVProgram* program = |
| 1959 GetVideoYUVProgram(tex_coord_precision, sampler); |
1952 DCHECK(program && (program->initialized() || IsContextLost())); | 1960 DCHECK(program && (program->initialized() || IsContextLost())); |
1953 SetUseProgram(program->program()); | 1961 SetUseProgram(program->program()); |
1954 matrix_location = program->vertex_shader().matrix_location(); | 1962 matrix_location = program->vertex_shader().matrix_location(); |
1955 tex_scale_location = program->vertex_shader().tex_scale_location(); | 1963 ya_tex_scale_location = program->vertex_shader().ya_tex_scale_location(); |
1956 tex_offset_location = program->vertex_shader().tex_offset_location(); | 1964 ya_tex_offset_location = program->vertex_shader().ya_tex_offset_location(); |
| 1965 uv_tex_scale_location = program->vertex_shader().uv_tex_scale_location(); |
| 1966 uv_tex_offset_location = program->vertex_shader().uv_tex_offset_location(); |
1957 y_texture_location = program->fragment_shader().y_texture_location(); | 1967 y_texture_location = program->fragment_shader().y_texture_location(); |
1958 u_texture_location = program->fragment_shader().u_texture_location(); | 1968 u_texture_location = program->fragment_shader().u_texture_location(); |
1959 v_texture_location = program->fragment_shader().v_texture_location(); | 1969 v_texture_location = program->fragment_shader().v_texture_location(); |
1960 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); | 1970 yuv_matrix_location = program->fragment_shader().yuv_matrix_location(); |
1961 yuv_adj_location = program->fragment_shader().yuv_adj_location(); | 1971 yuv_adj_location = program->fragment_shader().yuv_adj_location(); |
1962 ya_clamp_rect_location = | 1972 ya_clamp_rect_location = |
1963 program->fragment_shader().ya_clamp_rect_location(); | 1973 program->fragment_shader().ya_clamp_rect_location(); |
1964 uv_clamp_rect_location = | 1974 uv_clamp_rect_location = |
1965 program->fragment_shader().uv_clamp_rect_location(); | 1975 program->fragment_shader().uv_clamp_rect_location(); |
1966 alpha_location = program->fragment_shader().alpha_location(); | 1976 alpha_location = program->fragment_shader().alpha_location(); |
1967 } | 1977 } |
1968 | 1978 |
1969 gl_->Uniform2f(tex_scale_location, quad->tex_coord_rect.width(), | 1979 gfx::SizeF ya_tex_scale(1.0f, 1.0f); |
1970 quad->tex_coord_rect.height()); | 1980 gfx::SizeF uv_tex_scale(1.0f, 1.0f); |
1971 gl_->Uniform2f(tex_offset_location, quad->tex_coord_rect.x(), | 1981 if (sampler != SAMPLER_TYPE_2D_RECT) { |
1972 quad->tex_coord_rect.y()); | 1982 DCHECK(!quad->ya_tex_size.IsEmpty()); |
1973 // Clamping to half a texel inside the tex coord rect prevents bilinear | 1983 DCHECK(!quad->uv_tex_size.IsEmpty()); |
1974 // filtering from filtering outside the tex coord rect. | 1984 ya_tex_scale = gfx::SizeF(1.0f / quad->ya_tex_size.width(), |
1975 gfx::RectF ya_clamp_rect(quad->tex_coord_rect); | 1985 1.0f / quad->ya_tex_size.height()); |
1976 // Special case: empty texture size implies no clamping. | 1986 uv_tex_scale = gfx::SizeF(1.0f / quad->uv_tex_size.width(), |
1977 if (!quad->ya_tex_size.IsEmpty()) { | 1987 1.0f / quad->uv_tex_size.height()); |
1978 ya_clamp_rect.Inset(0.5f / quad->ya_tex_size.width(), | |
1979 0.5f / quad->ya_tex_size.height()); | |
1980 } | 1988 } |
1981 gfx::RectF uv_clamp_rect(quad->tex_coord_rect); | 1989 |
1982 if (!quad->uv_tex_size.IsEmpty()) { | 1990 float ya_vertex_tex_translate_x = |
1983 uv_clamp_rect.Inset(0.5f / quad->uv_tex_size.width(), | 1991 quad->ya_tex_coord_rect.x() * ya_tex_scale.width(); |
1984 0.5f / quad->uv_tex_size.height()); | 1992 float ya_vertex_tex_translate_y = |
1985 } | 1993 quad->ya_tex_coord_rect.y() * ya_tex_scale.height(); |
| 1994 float ya_vertex_tex_scale_x = |
| 1995 quad->ya_tex_coord_rect.width() * ya_tex_scale.width(); |
| 1996 float ya_vertex_tex_scale_y = |
| 1997 quad->ya_tex_coord_rect.height() * ya_tex_scale.height(); |
| 1998 |
| 1999 float uv_vertex_tex_translate_x = |
| 2000 quad->uv_tex_coord_rect.x() * uv_tex_scale.width(); |
| 2001 float uv_vertex_tex_translate_y = |
| 2002 quad->uv_tex_coord_rect.y() * uv_tex_scale.height(); |
| 2003 float uv_vertex_tex_scale_x = |
| 2004 quad->uv_tex_coord_rect.width() * uv_tex_scale.width(); |
| 2005 float uv_vertex_tex_scale_y = |
| 2006 quad->uv_tex_coord_rect.height() * uv_tex_scale.height(); |
| 2007 |
| 2008 gl_->Uniform2f(ya_tex_scale_location, ya_vertex_tex_scale_x, |
| 2009 ya_vertex_tex_scale_y); |
| 2010 gl_->Uniform2f(ya_tex_offset_location, ya_vertex_tex_translate_x, |
| 2011 ya_vertex_tex_translate_y); |
| 2012 gl_->Uniform2f(uv_tex_scale_location, uv_vertex_tex_scale_x, |
| 2013 uv_vertex_tex_scale_y); |
| 2014 gl_->Uniform2f(uv_tex_offset_location, uv_vertex_tex_translate_x, |
| 2015 uv_vertex_tex_translate_y); |
| 2016 |
| 2017 gfx::RectF ya_clamp_rect(ya_vertex_tex_translate_x, ya_vertex_tex_translate_y, |
| 2018 ya_vertex_tex_scale_x, ya_vertex_tex_scale_y); |
| 2019 ya_clamp_rect.Inset(0.5f * ya_tex_scale.width(), |
| 2020 0.5f * ya_tex_scale.height()); |
| 2021 gfx::RectF uv_clamp_rect(uv_vertex_tex_translate_x, uv_vertex_tex_translate_y, |
| 2022 uv_vertex_tex_scale_x, uv_vertex_tex_scale_y); |
| 2023 uv_clamp_rect.Inset(0.5f * uv_tex_scale.width(), |
| 2024 0.5f * uv_tex_scale.height()); |
1986 gl_->Uniform4f(ya_clamp_rect_location, ya_clamp_rect.x(), ya_clamp_rect.y(), | 2025 gl_->Uniform4f(ya_clamp_rect_location, ya_clamp_rect.x(), ya_clamp_rect.y(), |
1987 ya_clamp_rect.right(), ya_clamp_rect.bottom()); | 2026 ya_clamp_rect.right(), ya_clamp_rect.bottom()); |
1988 gl_->Uniform4f(uv_clamp_rect_location, uv_clamp_rect.x(), uv_clamp_rect.y(), | 2027 gl_->Uniform4f(uv_clamp_rect_location, uv_clamp_rect.x(), uv_clamp_rect.y(), |
1989 uv_clamp_rect.right(), uv_clamp_rect.bottom()); | 2028 uv_clamp_rect.right(), uv_clamp_rect.bottom()); |
1990 | 2029 |
1991 gl_->Uniform1i(y_texture_location, 1); | 2030 gl_->Uniform1i(y_texture_location, 1); |
1992 gl_->Uniform1i(u_texture_location, 2); | 2031 gl_->Uniform1i(u_texture_location, 2); |
1993 gl_->Uniform1i(v_texture_location, 3); | 2032 gl_->Uniform1i(v_texture_location, 3); |
1994 if (use_alpha_plane) | 2033 if (use_alpha_plane) |
1995 gl_->Uniform1i(a_texture_location, 4); | 2034 gl_->Uniform1i(a_texture_location, 4); |
(...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3277 TextureProgram* program = &texture_io_surface_program_[precision]; | 3316 TextureProgram* program = &texture_io_surface_program_[precision]; |
3278 if (!program->initialized()) { | 3317 if (!program->initialized()) { |
3279 TRACE_EVENT0("cc", "GLRenderer::textureIOSurfaceProgram::initialize"); | 3318 TRACE_EVENT0("cc", "GLRenderer::textureIOSurfaceProgram::initialize"); |
3280 program->Initialize(output_surface_->context_provider(), precision, | 3319 program->Initialize(output_surface_->context_provider(), precision, |
3281 SAMPLER_TYPE_2D_RECT); | 3320 SAMPLER_TYPE_2D_RECT); |
3282 } | 3321 } |
3283 return program; | 3322 return program; |
3284 } | 3323 } |
3285 | 3324 |
3286 const GLRenderer::VideoYUVProgram* GLRenderer::GetVideoYUVProgram( | 3325 const GLRenderer::VideoYUVProgram* GLRenderer::GetVideoYUVProgram( |
3287 TexCoordPrecision precision) { | 3326 TexCoordPrecision precision, |
| 3327 SamplerType sampler) { |
3288 DCHECK_GE(precision, 0); | 3328 DCHECK_GE(precision, 0); |
3289 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); | 3329 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); |
3290 VideoYUVProgram* program = &video_yuv_program_[precision]; | 3330 DCHECK_GE(sampler, 0); |
| 3331 DCHECK_LE(sampler, LAST_SAMPLER_TYPE); |
| 3332 VideoYUVProgram* program = &video_yuv_program_[precision][sampler]; |
3291 if (!program->initialized()) { | 3333 if (!program->initialized()) { |
3292 TRACE_EVENT0("cc", "GLRenderer::videoYUVProgram::initialize"); | 3334 TRACE_EVENT0("cc", "GLRenderer::videoYUVProgram::initialize"); |
3293 program->Initialize(output_surface_->context_provider(), precision, | 3335 program->Initialize(output_surface_->context_provider(), precision, |
3294 SAMPLER_TYPE_2D); | 3336 sampler); |
3295 } | 3337 } |
3296 return program; | 3338 return program; |
3297 } | 3339 } |
3298 | 3340 |
3299 const GLRenderer::VideoYUVAProgram* GLRenderer::GetVideoYUVAProgram( | 3341 const GLRenderer::VideoYUVAProgram* GLRenderer::GetVideoYUVAProgram( |
3300 TexCoordPrecision precision) { | 3342 TexCoordPrecision precision, |
| 3343 SamplerType sampler) { |
3301 DCHECK_GE(precision, 0); | 3344 DCHECK_GE(precision, 0); |
3302 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); | 3345 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); |
3303 VideoYUVAProgram* program = &video_yuva_program_[precision]; | 3346 DCHECK_GE(sampler, 0); |
| 3347 DCHECK_LE(sampler, LAST_SAMPLER_TYPE); |
| 3348 VideoYUVAProgram* program = &video_yuva_program_[precision][sampler]; |
3304 if (!program->initialized()) { | 3349 if (!program->initialized()) { |
3305 TRACE_EVENT0("cc", "GLRenderer::videoYUVAProgram::initialize"); | 3350 TRACE_EVENT0("cc", "GLRenderer::videoYUVAProgram::initialize"); |
3306 program->Initialize(output_surface_->context_provider(), precision, | 3351 program->Initialize(output_surface_->context_provider(), precision, |
3307 SAMPLER_TYPE_2D); | 3352 sampler); |
3308 } | 3353 } |
3309 return program; | 3354 return program; |
3310 } | 3355 } |
3311 | 3356 |
3312 const GLRenderer::VideoStreamTextureProgram* | 3357 const GLRenderer::VideoStreamTextureProgram* |
3313 GLRenderer::GetVideoStreamTextureProgram(TexCoordPrecision precision) { | 3358 GLRenderer::GetVideoStreamTextureProgram(TexCoordPrecision precision) { |
3314 if (!Capabilities().using_egl_image) | 3359 if (!Capabilities().using_egl_image) |
3315 return NULL; | 3360 return NULL; |
3316 DCHECK_GE(precision, 0); | 3361 DCHECK_GE(precision, 0); |
3317 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); | 3362 DCHECK_LE(precision, LAST_TEX_COORD_PRECISION); |
(...skipping 20 matching lines...) Expand all Loading... |
3338 tile_program_swizzle_aa_[i][j].Cleanup(gl_); | 3383 tile_program_swizzle_aa_[i][j].Cleanup(gl_); |
3339 | 3384 |
3340 for (int k = 0; k <= LAST_BLEND_MODE; k++) { | 3385 for (int k = 0; k <= LAST_BLEND_MODE; k++) { |
3341 for (int l = 0; l <= LAST_MASK_VALUE; ++l) { | 3386 for (int l = 0; l <= LAST_MASK_VALUE; ++l) { |
3342 render_pass_mask_program_[i][j][k][l].Cleanup(gl_); | 3387 render_pass_mask_program_[i][j][k][l].Cleanup(gl_); |
3343 render_pass_mask_program_aa_[i][j][k][l].Cleanup(gl_); | 3388 render_pass_mask_program_aa_[i][j][k][l].Cleanup(gl_); |
3344 render_pass_mask_color_matrix_program_aa_[i][j][k][l].Cleanup(gl_); | 3389 render_pass_mask_color_matrix_program_aa_[i][j][k][l].Cleanup(gl_); |
3345 render_pass_mask_color_matrix_program_[i][j][k][l].Cleanup(gl_); | 3390 render_pass_mask_color_matrix_program_[i][j][k][l].Cleanup(gl_); |
3346 } | 3391 } |
3347 } | 3392 } |
| 3393 |
| 3394 video_yuv_program_[i][j].Cleanup(gl_); |
| 3395 video_yuva_program_[i][j].Cleanup(gl_); |
3348 } | 3396 } |
3349 for (int j = 0; j <= LAST_BLEND_MODE; j++) { | 3397 for (int j = 0; j <= LAST_BLEND_MODE; j++) { |
3350 render_pass_program_[i][j].Cleanup(gl_); | 3398 render_pass_program_[i][j].Cleanup(gl_); |
3351 render_pass_program_aa_[i][j].Cleanup(gl_); | 3399 render_pass_program_aa_[i][j].Cleanup(gl_); |
3352 render_pass_color_matrix_program_[i][j].Cleanup(gl_); | 3400 render_pass_color_matrix_program_[i][j].Cleanup(gl_); |
3353 render_pass_color_matrix_program_aa_[i][j].Cleanup(gl_); | 3401 render_pass_color_matrix_program_aa_[i][j].Cleanup(gl_); |
3354 } | 3402 } |
3355 | 3403 |
3356 for (int j = 0; j <= LAST_SAMPLER_TYPE; ++j) { | 3404 for (int j = 0; j <= LAST_SAMPLER_TYPE; ++j) { |
3357 texture_program_[i][j].Cleanup(gl_); | 3405 texture_program_[i][j].Cleanup(gl_); |
3358 nonpremultiplied_texture_program_[i][j].Cleanup(gl_); | 3406 nonpremultiplied_texture_program_[i][j].Cleanup(gl_); |
3359 texture_background_program_[i][j].Cleanup(gl_); | 3407 texture_background_program_[i][j].Cleanup(gl_); |
3360 nonpremultiplied_texture_background_program_[i][j].Cleanup(gl_); | 3408 nonpremultiplied_texture_background_program_[i][j].Cleanup(gl_); |
3361 } | 3409 } |
3362 texture_io_surface_program_[i].Cleanup(gl_); | 3410 texture_io_surface_program_[i].Cleanup(gl_); |
3363 | 3411 |
3364 video_yuv_program_[i].Cleanup(gl_); | |
3365 video_yuva_program_[i].Cleanup(gl_); | |
3366 video_stream_texture_program_[i].Cleanup(gl_); | 3412 video_stream_texture_program_[i].Cleanup(gl_); |
3367 } | 3413 } |
3368 | 3414 |
3369 tile_checkerboard_program_.Cleanup(gl_); | 3415 tile_checkerboard_program_.Cleanup(gl_); |
3370 | 3416 |
3371 debug_border_program_.Cleanup(gl_); | 3417 debug_border_program_.Cleanup(gl_); |
3372 solid_color_program_.Cleanup(gl_); | 3418 solid_color_program_.Cleanup(gl_); |
3373 solid_color_program_aa_.Cleanup(gl_); | 3419 solid_color_program_aa_.Cleanup(gl_); |
3374 | 3420 |
3375 if (offscreen_framebuffer_id_) | 3421 if (offscreen_framebuffer_id_) |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3455 context_support_->ScheduleOverlayPlane( | 3501 context_support_->ScheduleOverlayPlane( |
3456 overlay.plane_z_order, | 3502 overlay.plane_z_order, |
3457 overlay.transform, | 3503 overlay.transform, |
3458 pending_overlay_resources_.back()->texture_id(), | 3504 pending_overlay_resources_.back()->texture_id(), |
3459 ToNearestRect(overlay.display_rect), | 3505 ToNearestRect(overlay.display_rect), |
3460 overlay.uv_rect); | 3506 overlay.uv_rect); |
3461 } | 3507 } |
3462 } | 3508 } |
3463 | 3509 |
3464 } // namespace cc | 3510 } // namespace cc |
OLD | NEW |