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

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

Issue 1477593002: gpu: Initial implementation of CommitOverlayPlanes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add-cop-command
Patch Set: typo Created 5 years 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 <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 2209 matching lines...) Expand 10 before | Expand all | Expand 10 after
2220 int frame_number_; 2220 int frame_number_;
2221 2221
2222 // Number of commands remaining to be processed in DoCommands(). 2222 // Number of commands remaining to be processed in DoCommands().
2223 int commands_to_process_; 2223 int commands_to_process_;
2224 2224
2225 bool has_robustness_extension_; 2225 bool has_robustness_extension_;
2226 error::ContextLostReason context_lost_reason_; 2226 error::ContextLostReason context_lost_reason_;
2227 bool context_was_lost_; 2227 bool context_was_lost_;
2228 bool reset_by_robustness_extension_; 2228 bool reset_by_robustness_extension_;
2229 bool supports_post_sub_buffer_; 2229 bool supports_post_sub_buffer_;
2230 bool supports_commit_overlay_planes_;
2230 bool supports_async_swap_; 2231 bool supports_async_swap_;
2231 2232
2232 ContextType context_type_; 2233 ContextType context_type_;
2233 2234
2234 // These flags are used to override the state of the shared feature_info_ 2235 // These flags are used to override the state of the shared feature_info_
2235 // member. Because the same FeatureInfo instance may be shared among many 2236 // member. Because the same FeatureInfo instance may be shared among many
2236 // contexts, the assumptions on the availablity of extensions in WebGL 2237 // contexts, the assumptions on the availablity of extensions in WebGL
2237 // contexts may be broken. These flags override the shared state to preserve 2238 // contexts may be broken. These flags override the shared state to preserve
2238 // WebGL semantics. 2239 // WebGL semantics.
2239 bool derivatives_explicitly_enabled_; 2240 bool derivatives_explicitly_enabled_;
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
2766 backbuffer_needs_clear_bits_(0), 2767 backbuffer_needs_clear_bits_(0),
2767 current_decoder_error_(error::kNoError), 2768 current_decoder_error_(error::kNoError),
2768 validators_(group_->feature_info()->validators()), 2769 validators_(group_->feature_info()->validators()),
2769 feature_info_(group_->feature_info()), 2770 feature_info_(group_->feature_info()),
2770 frame_number_(0), 2771 frame_number_(0),
2771 has_robustness_extension_(false), 2772 has_robustness_extension_(false),
2772 context_lost_reason_(error::kUnknown), 2773 context_lost_reason_(error::kUnknown),
2773 context_was_lost_(false), 2774 context_was_lost_(false),
2774 reset_by_robustness_extension_(false), 2775 reset_by_robustness_extension_(false),
2775 supports_post_sub_buffer_(false), 2776 supports_post_sub_buffer_(false),
2777 supports_commit_overlay_planes_(false),
2776 supports_async_swap_(false), 2778 supports_async_swap_(false),
2777 context_type_(CONTEXT_TYPE_OPENGLES2), 2779 context_type_(CONTEXT_TYPE_OPENGLES2),
2778 derivatives_explicitly_enabled_(false), 2780 derivatives_explicitly_enabled_(false),
2779 frag_depth_explicitly_enabled_(false), 2781 frag_depth_explicitly_enabled_(false),
2780 draw_buffers_explicitly_enabled_(false), 2782 draw_buffers_explicitly_enabled_(false),
2781 shader_texture_lod_explicitly_enabled_(false), 2783 shader_texture_lod_explicitly_enabled_(false),
2782 compile_shader_always_succeeds_(false), 2784 compile_shader_always_succeeds_(false),
2783 lose_context_when_out_of_memory_(false), 2785 lose_context_when_out_of_memory_(false),
2784 service_logging_(base::CommandLine::InitializedForCurrentProcess() 2786 service_logging_(base::CommandLine::InitializedForCurrentProcess()
2785 ? base::CommandLine::ForCurrentProcess()->HasSwitch( 2787 ? base::CommandLine::ForCurrentProcess()->HasSwitch(
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
3217 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 3219 glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
3218 } 3220 }
3219 } 3221 }
3220 3222
3221 supports_post_sub_buffer_ = surface->SupportsPostSubBuffer(); 3223 supports_post_sub_buffer_ = surface->SupportsPostSubBuffer();
3222 if (feature_info_->workarounds() 3224 if (feature_info_->workarounds()
3223 .disable_post_sub_buffers_for_onscreen_surfaces && 3225 .disable_post_sub_buffers_for_onscreen_surfaces &&
3224 !surface->IsOffscreen()) 3226 !surface->IsOffscreen())
3225 supports_post_sub_buffer_ = false; 3227 supports_post_sub_buffer_ = false;
3226 3228
3229 supports_commit_overlay_planes_ = surface->SupportsCommitOverlayPlanes();
3230
3227 supports_async_swap_ = surface->SupportsAsyncSwap(); 3231 supports_async_swap_ = surface->SupportsAsyncSwap();
3228 3232
3229 if (feature_info_->workarounds().reverse_point_sprite_coord_origin) { 3233 if (feature_info_->workarounds().reverse_point_sprite_coord_origin) {
3230 glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT); 3234 glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);
3231 } 3235 }
3232 3236
3233 if (feature_info_->workarounds().unbind_fbo_on_context_switch) { 3237 if (feature_info_->workarounds().unbind_fbo_on_context_switch) {
3234 context_->SetUnbindFboOnMakeCurrent(); 3238 context_->SetUnbindFboOnMakeCurrent();
3235 } 3239 }
3236 3240
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
3360 caps.discard_framebuffer = 3364 caps.discard_framebuffer =
3361 feature_info_->feature_flags().ext_discard_framebuffer; 3365 feature_info_->feature_flags().ext_discard_framebuffer;
3362 caps.sync_query = feature_info_->feature_flags().chromium_sync_query; 3366 caps.sync_query = feature_info_->feature_flags().chromium_sync_query;
3363 3367
3364 #if defined(OS_MACOSX) 3368 #if defined(OS_MACOSX)
3365 // This is unconditionally true on mac, no need to test for it at runtime. 3369 // This is unconditionally true on mac, no need to test for it at runtime.
3366 caps.iosurface = true; 3370 caps.iosurface = true;
3367 #endif 3371 #endif
3368 3372
3369 caps.post_sub_buffer = supports_post_sub_buffer_; 3373 caps.post_sub_buffer = supports_post_sub_buffer_;
3374 caps.commit_overlay_planes = supports_commit_overlay_planes_;
3370 caps.image = true; 3375 caps.image = true;
3371 caps.surfaceless = surfaceless_; 3376 caps.surfaceless = surfaceless_;
3372 3377
3373 caps.blend_equation_advanced = 3378 caps.blend_equation_advanced =
3374 feature_info_->feature_flags().blend_equation_advanced; 3379 feature_info_->feature_flags().blend_equation_advanced;
3375 caps.blend_equation_advanced_coherent = 3380 caps.blend_equation_advanced_coherent =
3376 feature_info_->feature_flags().blend_equation_advanced_coherent; 3381 feature_info_->feature_flags().blend_equation_advanced_coherent;
3377 caps.texture_rg = feature_info_->feature_flags().ext_texture_rg; 3382 caps.texture_rg = feature_info_->feature_flags().ext_texture_rg;
3378 caps.image_ycbcr_422 = 3383 caps.image_ycbcr_422 =
3379 feature_info_->feature_flags().chromium_image_ycbcr_422; 3384 feature_info_->feature_flags().chromium_image_ycbcr_422;
(...skipping 8613 matching lines...) Expand 10 before | Expand all | Expand 10 after
11993 if (result == gfx::SwapResult::SWAP_FAILED) { 11998 if (result == gfx::SwapResult::SWAP_FAILED) {
11994 LOG(ERROR) << "Context lost because SwapBuffers failed."; 11999 LOG(ERROR) << "Context lost because SwapBuffers failed.";
11995 if (!CheckResetStatus()) { 12000 if (!CheckResetStatus()) {
11996 MarkContextLost(error::kUnknown); 12001 MarkContextLost(error::kUnknown);
11997 group_->LoseContexts(error::kUnknown); 12002 group_->LoseContexts(error::kUnknown);
11998 } 12003 }
11999 } 12004 }
12000 } 12005 }
12001 12006
12002 void GLES2DecoderImpl::DoCommitOverlayPlanes() { 12007 void GLES2DecoderImpl::DoCommitOverlayPlanes() {
12003 // TODO(watk): crbug.com/560592 12008 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCommitOverlayPlanes");
12004 NOTIMPLEMENTED(); 12009 if (supports_async_swap_) {
12010 surface_->CommitOverlayPlanesAsync(base::Bind(
12011 &GLES2DecoderImpl::FinishSwapBuffers, base::AsWeakPtr(this)));
12012 } else {
12013 FinishSwapBuffers(surface_->CommitOverlayPlanes());
12014 }
12005 } 12015 }
12006 12016
12007 void GLES2DecoderImpl::DoSwapInterval(int interval) { 12017 void GLES2DecoderImpl::DoSwapInterval(int interval) {
12008 context_->SetSwapInterval(interval); 12018 context_->SetSwapInterval(interval);
12009 } 12019 }
12010 12020
12011 error::Error GLES2DecoderImpl::HandleEnableFeatureCHROMIUM( 12021 error::Error GLES2DecoderImpl::HandleEnableFeatureCHROMIUM(
12012 uint32 immediate_data_size, 12022 uint32 immediate_data_size,
12013 const void* cmd_data) { 12023 const void* cmd_data) {
12014 const gles2::cmds::EnableFeatureCHROMIUM& c = 12024 const gles2::cmds::EnableFeatureCHROMIUM& c =
(...skipping 3521 matching lines...) Expand 10 before | Expand all | Expand 10 after
15536 return error::kNoError; 15546 return error::kNoError;
15537 } 15547 }
15538 15548
15539 // Include the auto-generated part of this file. We split this because it means 15549 // Include the auto-generated part of this file. We split this because it means
15540 // we can easily edit the non-auto generated parts right here in this file 15550 // we can easily edit the non-auto generated parts right here in this file
15541 // instead of having to edit some template or the code generator. 15551 // instead of having to edit some template or the code generator.
15542 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 15552 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
15543 15553
15544 } // namespace gles2 15554 } // namespace gles2
15545 } // namespace gpu 15555 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698