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

Unified Diff: cc/output/texture_copier.cc

Issue 12665005: cc: Use highp precision for texture coords if available and needed (Closed) Base URL: http://git.chromium.org/chromium/src.git@highp2
Patch Set: Cleanup highp shaders Created 7 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 side-by-side diff with in-line comments
Download patch
« cc/output/shader.cc ('K') | « cc/output/texture_copier.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/texture_copier.cc
diff --git a/cc/output/texture_copier.cc b/cc/output/texture_copier.cc
index 5a8a41de9fab983ccac6a4ad96d2b3bdd2debb76..7d974a640a926ae0ac7eb37475224eb2d063d346 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(
+ 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_));
« cc/output/shader.cc ('K') | « cc/output/texture_copier.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698