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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 2055713003: gpu: Implement GL_INTEL_framebuffer_CMAA via shaders in the GPU Service (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Fix component & windows build. Created 4 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 21 matching lines...) Expand all
32 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 32 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
33 #include "gpu/command_buffer/common/mailbox.h" 33 #include "gpu/command_buffer/common/mailbox.h"
34 #include "gpu/command_buffer/service/buffer_manager.h" 34 #include "gpu/command_buffer/service/buffer_manager.h"
35 #include "gpu/command_buffer/service/context_group.h" 35 #include "gpu/command_buffer/service/context_group.h"
36 #include "gpu/command_buffer/service/context_state.h" 36 #include "gpu/command_buffer/service/context_state.h"
37 #include "gpu/command_buffer/service/error_state.h" 37 #include "gpu/command_buffer/service/error_state.h"
38 #include "gpu/command_buffer/service/feature_info.h" 38 #include "gpu/command_buffer/service/feature_info.h"
39 #include "gpu/command_buffer/service/framebuffer_manager.h" 39 #include "gpu/command_buffer/service/framebuffer_manager.h"
40 #include "gpu/command_buffer/service/gl_stream_texture_image.h" 40 #include "gpu/command_buffer/service/gl_stream_texture_image.h"
41 #include "gpu/command_buffer/service/gl_utils.h" 41 #include "gpu/command_buffer/service/gl_utils.h"
42 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h"
42 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h" 43 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h"
43 #include "gpu/command_buffer/service/gles2_cmd_copy_tex_image.h" 44 #include "gpu/command_buffer/service/gles2_cmd_copy_tex_image.h"
44 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" 45 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h"
45 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h" 46 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
46 #include "gpu/command_buffer/service/gles2_cmd_validation.h" 47 #include "gpu/command_buffer/service/gles2_cmd_validation.h"
47 #include "gpu/command_buffer/service/gpu_preferences.h" 48 #include "gpu/command_buffer/service/gpu_preferences.h"
48 #include "gpu/command_buffer/service/gpu_state_tracer.h" 49 #include "gpu/command_buffer/service/gpu_state_tracer.h"
49 #include "gpu/command_buffer/service/gpu_tracer.h" 50 #include "gpu/command_buffer/service/gpu_tracer.h"
50 #include "gpu/command_buffer/service/image_manager.h" 51 #include "gpu/command_buffer/service/image_manager.h"
51 #include "gpu/command_buffer/service/logger.h" 52 #include "gpu/command_buffer/service/logger.h"
(...skipping 2100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2152 bool shader_texture_lod_explicitly_enabled_; 2153 bool shader_texture_lod_explicitly_enabled_;
2153 2154
2154 bool compile_shader_always_succeeds_; 2155 bool compile_shader_always_succeeds_;
2155 2156
2156 // An optional behaviour to lose the context and group when OOM. 2157 // An optional behaviour to lose the context and group when OOM.
2157 bool lose_context_when_out_of_memory_; 2158 bool lose_context_when_out_of_memory_;
2158 2159
2159 // Log extra info. 2160 // Log extra info.
2160 bool service_logging_; 2161 bool service_logging_;
2161 2162
2163 std::unique_ptr<ApplyFramebufferAttachmentCMAAINTELResourceManager>
2164 apply_framebuffer_attachment_cmaa_intel_;
2162 std::unique_ptr<CopyTexImageResourceManager> copy_tex_image_blit_; 2165 std::unique_ptr<CopyTexImageResourceManager> copy_tex_image_blit_;
2163 std::unique_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_; 2166 std::unique_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_;
2164 std::unique_ptr<ClearFramebufferResourceManager> clear_framebuffer_blit_; 2167 std::unique_ptr<ClearFramebufferResourceManager> clear_framebuffer_blit_;
2165 2168
2166 // Cached values of the currently assigned viewport dimensions. 2169 // Cached values of the currently assigned viewport dimensions.
2167 GLsizei viewport_max_width_; 2170 GLsizei viewport_max_width_;
2168 GLsizei viewport_max_height_; 2171 GLsizei viewport_max_height_;
2169 2172
2170 // Command buffer stats. 2173 // Command buffer stats.
2171 base::TimeDelta total_processing_commands_time_; 2174 base::TimeDelta total_processing_commands_time_;
(...skipping 2102 matching lines...) Expand 10 before | Expand all | Expand 10 after
4274 4277
4275 if (offscreen_saved_color_texture_info_.get()) { 4278 if (offscreen_saved_color_texture_info_.get()) {
4276 DCHECK(offscreen_saved_color_texture_); 4279 DCHECK(offscreen_saved_color_texture_);
4277 DCHECK_EQ(offscreen_saved_color_texture_info_->service_id(), 4280 DCHECK_EQ(offscreen_saved_color_texture_info_->service_id(),
4278 offscreen_saved_color_texture_->id()); 4281 offscreen_saved_color_texture_->id());
4279 offscreen_saved_color_texture_->Invalidate(); 4282 offscreen_saved_color_texture_->Invalidate();
4280 offscreen_saved_color_texture_info_ = NULL; 4283 offscreen_saved_color_texture_info_ = NULL;
4281 } 4284 }
4282 ReleaseAllBackTextures(); 4285 ReleaseAllBackTextures();
4283 if (have_context) { 4286 if (have_context) {
4287 if (apply_framebuffer_attachment_cmaa_intel_.get()) {
4288 apply_framebuffer_attachment_cmaa_intel_->Destroy();
4289 apply_framebuffer_attachment_cmaa_intel_.reset();
4290 }
4291
4284 if (copy_tex_image_blit_.get()) { 4292 if (copy_tex_image_blit_.get()) {
4285 copy_tex_image_blit_->Destroy(); 4293 copy_tex_image_blit_->Destroy();
4286 copy_tex_image_blit_.reset(); 4294 copy_tex_image_blit_.reset();
4287 } 4295 }
4288 4296
4289 if (copy_texture_CHROMIUM_.get()) { 4297 if (copy_texture_CHROMIUM_.get()) {
4290 copy_texture_CHROMIUM_->Destroy(); 4298 copy_texture_CHROMIUM_->Destroy();
4291 copy_texture_CHROMIUM_.reset(); 4299 copy_texture_CHROMIUM_.reset();
4292 } 4300 }
4293 4301
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
4350 offscreen_resolved_color_texture_->Invalidate(); 4358 offscreen_resolved_color_texture_->Invalidate();
4351 } 4359 }
4352 4360
4353 // Current program must be cleared after calling ProgramManager::UnuseProgram. 4361 // Current program must be cleared after calling ProgramManager::UnuseProgram.
4354 // Otherwise, we can leak objects. http://crbug.com/258772. 4362 // Otherwise, we can leak objects. http://crbug.com/258772.
4355 // state_.current_program must be reset before group_ is reset because 4363 // state_.current_program must be reset before group_ is reset because
4356 // the later deletes the ProgramManager object that referred by 4364 // the later deletes the ProgramManager object that referred by
4357 // state_.current_program object. 4365 // state_.current_program object.
4358 state_.current_program = NULL; 4366 state_.current_program = NULL;
4359 4367
4368 apply_framebuffer_attachment_cmaa_intel_.reset();
4360 copy_tex_image_blit_.reset(); 4369 copy_tex_image_blit_.reset();
4361 copy_texture_CHROMIUM_.reset(); 4370 copy_texture_CHROMIUM_.reset();
4362 clear_framebuffer_blit_.reset(); 4371 clear_framebuffer_blit_.reset();
4363 4372
4364 if (query_manager_.get()) { 4373 if (query_manager_.get()) {
4365 query_manager_->Destroy(have_context); 4374 query_manager_->Destroy(have_context);
4366 query_manager_.reset(); 4375 query_manager_.reset();
4367 } 4376 }
4368 4377
4369 if (vertex_array_manager_ .get()) { 4378 if (vertex_array_manager_ .get()) {
(...skipping 10917 matching lines...) Expand 10 before | Expand all | Expand 10 after
15287 return; 15296 return;
15288 } 15297 }
15289 15298
15290 texture_ref = texture_manager()->Consume(client_id, texture); 15299 texture_ref = texture_manager()->Consume(client_id, texture);
15291 } 15300 }
15292 15301
15293 void GLES2DecoderImpl::DoApplyScreenSpaceAntialiasingCHROMIUM() { 15302 void GLES2DecoderImpl::DoApplyScreenSpaceAntialiasingCHROMIUM() {
15294 // Apply CMAA(Conservative Morphological Anti-Aliasing) algorithm to the 15303 // Apply CMAA(Conservative Morphological Anti-Aliasing) algorithm to the
15295 // color attachments of currently bound draw framebuffer. 15304 // color attachments of currently bound draw framebuffer.
15296 // Reference GL_INTEL_framebuffer_CMAA for details. 15305 // Reference GL_INTEL_framebuffer_CMAA for details.
15297 glApplyFramebufferAttachmentCMAAINTEL(); 15306 // Use platform version if available.
15307 if (!feature_info_->feature_flags()
15308 .use_chromium_screen_space_antialiasing_via_shaders) {
15309 glApplyFramebufferAttachmentCMAAINTEL();
15310 } else {
15311 // Defer initializing the CopyTextureCHROMIUMResourceManager until it is
15312 // needed because it takes ??s of milliseconds to initialize.
15313 if (!apply_framebuffer_attachment_cmaa_intel_.get()) {
15314 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER(
15315 "glApplyFramebufferAttachmentCMAAINTEL");
15316 apply_framebuffer_attachment_cmaa_intel_.reset(
15317 new ApplyFramebufferAttachmentCMAAINTELResourceManager());
15318 apply_framebuffer_attachment_cmaa_intel_->Initialize(this);
15319 RestoreCurrentFramebufferBindings();
15320 if (LOCAL_PEEK_GL_ERROR("glApplyFramebufferAttachmentCMAAINTEL") !=
15321 GL_NO_ERROR)
15322 return;
15323 }
15324 apply_framebuffer_attachment_cmaa_intel_
15325 ->ApplyFramebufferAttachmentCMAAINTEL(
15326 this, GetFramebufferInfoForTarget(GL_DRAW_FRAMEBUFFER));
15327 }
15298 } 15328 }
15299 15329
15300 void GLES2DecoderImpl::DoInsertEventMarkerEXT( 15330 void GLES2DecoderImpl::DoInsertEventMarkerEXT(
15301 GLsizei length, const GLchar* marker) { 15331 GLsizei length, const GLchar* marker) {
15302 if (!marker) { 15332 if (!marker) {
15303 marker = ""; 15333 marker = "";
15304 } 15334 }
15305 debug_marker_manager_.SetMarker( 15335 debug_marker_manager_.SetMarker(
15306 length ? std::string(marker, length) : std::string(marker)); 15336 length ? std::string(marker, length) : std::string(marker));
15307 } 15337 }
(...skipping 1665 matching lines...) Expand 10 before | Expand all | Expand 10 after
16973 } 17003 }
16974 17004
16975 // Include the auto-generated part of this file. We split this because it means 17005 // Include the auto-generated part of this file. We split this because it means
16976 // we can easily edit the non-auto generated parts right here in this file 17006 // we can easily edit the non-auto generated parts right here in this file
16977 // instead of having to edit some template or the code generator. 17007 // instead of having to edit some template or the code generator.
16978 #include "base/macros.h" 17008 #include "base/macros.h"
16979 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 17009 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
16980 17010
16981 } // namespace gles2 17011 } // namespace gles2
16982 } // namespace gpu 17012 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc ('k') | gpu/command_buffer_service.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698