Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "gpu/command_buffer/service/framebuffer_manager.h" | 8 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| 9 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" |
| 10 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 10 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 11 #include "gpu/command_buffer/service/texture_manager.h" | |
| 11 #include "ui/gl/gl_context.h" | 12 #include "ui/gl/gl_context.h" |
| 12 #include "ui/gl/gl_gl_api_implementation.h" | 13 #include "ui/gl/gl_gl_api_implementation.h" |
| 13 #include "ui/gl/gl_version_info.h" | 14 #include "ui/gl/gl_version_info.h" |
| 14 | 15 |
| 15 #define SHADER(Src) #Src | 16 #define SHADER(Src) #Src |
| 16 | 17 |
| 17 namespace gpu { | 18 namespace gpu { |
| 18 namespace gles2 { | 19 namespace gles2 { |
| 19 | 20 |
| 20 ApplyFramebufferAttachmentCMAAINTELResourceManager:: | 21 ApplyFramebufferAttachmentCMAAINTELResourceManager:: |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 200 glDeleteProgram(debug_display_edges_shader_); | 201 glDeleteProgram(debug_display_edges_shader_); |
| 201 | 202 |
| 202 initialized_ = false; | 203 initialized_ = false; |
| 203 } | 204 } |
| 204 | 205 |
| 205 // Apply CMAA(Conservative Morphological Anti-Aliasing) algorithm to the | 206 // Apply CMAA(Conservative Morphological Anti-Aliasing) algorithm to the |
| 206 // color attachments of currently bound draw framebuffer. | 207 // color attachments of currently bound draw framebuffer. |
| 207 // Reference GL_INTEL_framebuffer_CMAA for details. | 208 // Reference GL_INTEL_framebuffer_CMAA for details. |
| 208 void ApplyFramebufferAttachmentCMAAINTELResourceManager:: | 209 void ApplyFramebufferAttachmentCMAAINTELResourceManager:: |
| 209 ApplyFramebufferAttachmentCMAAINTEL( | 210 ApplyFramebufferAttachmentCMAAINTEL( |
| 210 gles2::GLES2Decoder* decoder, | 211 GLES2Decoder* decoder, |
| 211 gles2::Framebuffer* framebuffer, | 212 Framebuffer* framebuffer, |
| 212 gles2::CopyTextureCHROMIUMResourceManager* copier) { | 213 CopyTextureCHROMIUMResourceManager* copier, |
| 214 TextureManager* texture_manager) { | |
| 213 DCHECK(decoder); | 215 DCHECK(decoder); |
| 214 DCHECK(initialized_); | 216 DCHECK(initialized_); |
| 215 if (!framebuffer) | 217 if (!framebuffer) |
| 216 return; | 218 return; |
| 217 | 219 |
| 218 glDisable(GL_SCISSOR_TEST); | 220 glDisable(GL_SCISSOR_TEST); |
| 219 glDisable(GL_STENCIL_TEST); | 221 glDisable(GL_STENCIL_TEST); |
| 220 glDisable(GL_CULL_FACE); | 222 glDisable(GL_CULL_FACE); |
| 221 glDisable(GL_BLEND); | 223 glDisable(GL_BLEND); |
| 222 | 224 |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 234 continue; | 236 continue; |
| 235 GLsizei width = attachment->width(); | 237 GLsizei width = attachment->width(); |
| 236 GLsizei height = attachment->height(); | 238 GLsizei height = attachment->height(); |
| 237 GLenum internal_format = attachment->internal_format(); | 239 GLenum internal_format = attachment->internal_format(); |
| 238 | 240 |
| 239 // Resize internal structures - only if needed. | 241 // Resize internal structures - only if needed. |
| 240 OnSize(width, height); | 242 OnSize(width, height); |
| 241 | 243 |
| 242 // CMAA internally expects GL_RGBA8 textures. | 244 // CMAA internally expects GL_RGBA8 textures. |
| 243 // Process using a GL_RGBA8 copy if this is not the case. | 245 // Process using a GL_RGBA8 copy if this is not the case. |
| 244 bool do_copy = internal_format != GL_RGBA8; | 246 DCHECK(attachment->object_name()); |
| 247 TextureRef* texture = | |
| 248 texture_manager->GetTexture(attachment->object_name()); | |
| 249 const bool rgba_immutable = | |
| 250 texture->texture()->IsImmutable() && | |
| 251 TextureManager::ExtractFormatFromStorageFormat(internal_format) == | |
| 252 GL_RGBA; | |
| 253 const bool do_copy = !rgba_immutable; | |
| 245 | 254 |
| 246 // CMAA Effect | 255 // CMAA Effect |
| 247 if (do_copy) { | 256 if (do_copy) { |
| 248 ApplyCMAAEffectTexture(source_texture, rgba8_texture_, do_copy); | 257 ApplyCMAAEffectTexture(source_texture, rgba8_texture_, do_copy); |
| 249 | 258 |
| 250 copier->DoCopySubTexture( | 259 copier->DoCopySubTexture( |
|
qiankun
2017/02/08 03:19:56
Hi DS,
DoCopySubTexture only supported GLES2 form
dshwang
2017/02/10 01:13:38
Hi Qiankun,
CMAA requires only RGB, RGBA, and pro
| |
| 251 decoder, GL_TEXTURE_2D, rgba8_texture_, GL_RGBA8, GL_TEXTURE_2D, | 260 decoder, GL_TEXTURE_2D, rgba8_texture_, GL_RGBA8, GL_TEXTURE_2D, |
| 252 source_texture, internal_format, 0, 0, 0, 0, width_, height_, | 261 source_texture, internal_format, 0, 0, 0, 0, width_, height_, |
| 253 width_, height_, width_, height_, false, false, false); | 262 width_, height_, width_, height_, false, false, false); |
| 254 } else { | 263 } else { |
| 255 ApplyCMAAEffectTexture(source_texture, source_texture, do_copy); | 264 ApplyCMAAEffectTexture(source_texture, source_texture, do_copy); |
| 256 } | 265 } |
| 257 | 266 |
| 258 decoder->RestoreTextureState(source_texture); | 267 decoder->RestoreTextureState(source_texture); |
| 259 } | 268 } |
| 260 } | 269 } |
| (...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1841 \n#endif\n | 1850 \n#endif\n |
| 1842 \n#if defined DISPLAY_EDGES\n | 1851 \n#if defined DISPLAY_EDGES\n |
| 1843 DisplayEdges(); | 1852 DisplayEdges(); |
| 1844 \n#endif\n | 1853 \n#endif\n |
| 1845 } | 1854 } |
| 1846 ); | 1855 ); |
| 1847 /* clang-format on */ | 1856 /* clang-format on */ |
| 1848 | 1857 |
| 1849 } // namespace gles2 | 1858 } // namespace gles2 |
| 1850 } // namespace gpu | 1859 } // namespace gpu |
| OLD | NEW |