| Index: cc/output/texture_copier.cc
|
| diff --git a/cc/output/texture_copier.cc b/cc/output/texture_copier.cc
|
| index 5a8a41de9fab983ccac6a4ad96d2b3bdd2debb76..8c5702db552b0e0c162843de0d59a66eadcddffa 100644
|
| --- a/cc/output/texture_copier.cc
|
| +++ b/cc/output/texture_copier.cc
|
| @@ -29,12 +29,15 @@ AcceleratedTextureCopier::AcceleratedTextureCopier(
|
| GL_ARRAY_BUFFER, sizeof(kPositions), kPositions, GL_STATIC_DRAW));
|
| GLC(context_, context_->bindBuffer(GL_ARRAY_BUFFER, 0));
|
|
|
| - blit_program_.reset(new BlitProgram(context_));
|
| + blit_program_.reset(new BlitProgram(context_, TexCoordPrecisionMedium));
|
| + blit_program_highp_.reset(new BlitProgram(context_, TexCoordPrecisionHigh));
|
| }
|
|
|
| AcceleratedTextureCopier::~AcceleratedTextureCopier() {
|
| if (blit_program_)
|
| blit_program_->Cleanup(context_);
|
| + if (blit_program_highp_)
|
| + blit_program_highp_->Cleanup(context_);
|
| if (position_buffer_)
|
| GLC(context_, context_->deleteBuffer(position_buffer_));
|
| if (fbo_)
|
| @@ -71,11 +74,22 @@ void AcceleratedTextureCopier::CopyTexture(Parameters parameters) {
|
| context_->texParameteri(
|
| GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
|
|
|
| - if (!blit_program_->initialized())
|
| - blit_program_->Initialize(context_, using_bind_uniforms_);
|
| + TexCoordPrecision texCoordPrecision = TexCoordPrecisionRequired(
|
| + context_, gfx::Point(parameters.size.width(), parameters.size.height()));
|
| + if (texCoordPrecision == TexCoordPrecisionHigh) {
|
| + if (!blit_program_highp_->initialized())
|
| + blit_program_highp_->Initialize(context_, using_bind_uniforms_);
|
| +
|
| + // TODO: Use EXT_framebuffer_blit if available.
|
| + GLC(context_, context_->useProgram(blit_program_highp_->program()));
|
| + } else {
|
| + if (!blit_program_->initialized())
|
| + blit_program_->Initialize(context_, using_bind_uniforms_);
|
| +
|
| + // TODO: Use EXT_framebuffer_blit if available.
|
| + GLC(context_, context_->useProgram(blit_program_->program()));
|
| + }
|
|
|
| - // TODO: Use EXT_framebuffer_blit if available.
|
| - GLC(context_, context_->useProgram(blit_program_->program()));
|
|
|
| const int kPositionAttribute = 0;
|
| GLC(context_, context_->bindBuffer(GL_ARRAY_BUFFER, position_buffer_));
|
|
|