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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Issue 2131863003: WebGL: use storage texture for DrawingBuffer only if CMAA is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: WebGL: use storage texture for DrawingBuffer only if CMAA is enabled. Created 4 years, 5 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 | « no previous file | 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 /* 1 /*
2 * Copyright (c) 2010, Google Inc. All rights reserved. 2 * Copyright (c) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 m_antiAliasingMode = None; 478 m_antiAliasingMode = None;
479 if (useMultisampling) { 479 if (useMultisampling) {
480 m_gl->GetIntegerv(GL_MAX_SAMPLES_ANGLE, &maxSampleCount); 480 m_gl->GetIntegerv(GL_MAX_SAMPLES_ANGLE, &maxSampleCount);
481 m_antiAliasingMode = MSAAExplicitResolve; 481 m_antiAliasingMode = MSAAExplicitResolve;
482 if (m_extensionsUtil->supportsExtension("GL_EXT_multisampled_render_to_t exture")) { 482 if (m_extensionsUtil->supportsExtension("GL_EXT_multisampled_render_to_t exture")) {
483 m_antiAliasingMode = MSAAImplicitResolve; 483 m_antiAliasingMode = MSAAImplicitResolve;
484 } else if (m_extensionsUtil->supportsExtension("GL_CHROMIUM_screen_space _antialiasing")) { 484 } else if (m_extensionsUtil->supportsExtension("GL_CHROMIUM_screen_space _antialiasing")) {
485 m_antiAliasingMode = ScreenSpaceAntialiasing; 485 m_antiAliasingMode = ScreenSpaceAntialiasing;
486 } 486 }
487 } 487 }
488 m_storageTextureSupported = m_webGLVersion > WebGL1 || m_extensionsUtil->sup portsExtension("GL_EXT_texture_storage"); 488 // TODO(dshwang): enable storage texture on all platform. crbug.com/557848
489 // Linux ATI bot fails WebglConformance.conformance_textures_misc_tex_image_ webgl
490 // So use storage texture only if ScreenSpaceAntialiasing is enabled,
491 // because ScreenSpaceAntialiasing is much faster with storage texture.
492 m_storageTextureSupported = (m_webGLVersion > WebGL1
493 || m_extensionsUtil->supportsExtension("GL_EXT_texture_storage"))
494 && m_antiAliasingMode == ScreenSpaceAntialiasing;
489 m_sampleCount = std::min(4, maxSampleCount); 495 m_sampleCount = std::min(4, maxSampleCount);
490 496
491 m_gl->GenFramebuffers(1, &m_fbo); 497 m_gl->GenFramebuffers(1, &m_fbo);
492 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo); 498 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo);
493 if (wantExplicitResolve()) { 499 if (wantExplicitResolve()) {
494 m_gl->GenFramebuffers(1, &m_multisampleFBO); 500 m_gl->GenFramebuffers(1, &m_multisampleFBO);
495 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO); 501 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO);
496 m_gl->GenRenderbuffers(1, &m_multisampleRenderbuffer); 502 m_gl->GenRenderbuffers(1, &m_multisampleRenderbuffer);
497 } 503 }
498 if (!reset(size)) 504 if (!reset(size))
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1116 1122
1117 void DrawingBuffer::restoreTextureBindings() 1123 void DrawingBuffer::restoreTextureBindings()
1118 { 1124 {
1119 // This class potentially modifies the bindings for GL_TEXTURE_2D and 1125 // This class potentially modifies the bindings for GL_TEXTURE_2D and
1120 // GL_TEXTURE_RECTANGLE. Only GL_TEXTURE_2D needs to be restored since 1126 // GL_TEXTURE_RECTANGLE. Only GL_TEXTURE_2D needs to be restored since
1121 // the public interface for WebGL does not support GL_TEXTURE_RECTANGLE. 1127 // the public interface for WebGL does not support GL_TEXTURE_RECTANGLE.
1122 m_gl->BindTexture(GL_TEXTURE_2D, m_texture2DBinding); 1128 m_gl->BindTexture(GL_TEXTURE_2D, m_texture2DBinding);
1123 } 1129 }
1124 1130
1125 } // namespace blink 1131 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698