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

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

Issue 2383753002: gpu: Add GpuFence framework.
Patch Set: rebase Created 4 years, 1 month 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 18 matching lines...) Expand all
29 #include "build/build_config.h" 29 #include "build/build_config.h"
30 #include "gpu/command_buffer/common/debug_marker_manager.h" 30 #include "gpu/command_buffer/common/debug_marker_manager.h"
31 #include "gpu/command_buffer/common/gles2_cmd_format.h" 31 #include "gpu/command_buffer/common/gles2_cmd_format.h"
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/fence_manager.h"
39 #include "gpu/command_buffer/service/framebuffer_manager.h" 40 #include "gpu/command_buffer/service/framebuffer_manager.h"
40 #include "gpu/command_buffer/service/gl_stream_texture_image.h" 41 #include "gpu/command_buffer/service/gl_stream_texture_image.h"
41 #include "gpu/command_buffer/service/gl_utils.h" 42 #include "gpu/command_buffer/service/gl_utils.h"
42 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" 43 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h"
43 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h" 44 #include "gpu/command_buffer/service/gles2_cmd_clear_framebuffer.h"
44 #include "gpu/command_buffer/service/gles2_cmd_copy_tex_image.h" 45 #include "gpu/command_buffer/service/gles2_cmd_copy_tex_image.h"
45 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" 46 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h"
46 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h" 47 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
47 #include "gpu/command_buffer/service/gles2_cmd_srgb_converter.h" 48 #include "gpu/command_buffer/service/gles2_cmd_srgb_converter.h"
48 #include "gpu/command_buffer/service/gles2_cmd_validation.h" 49 #include "gpu/command_buffer/service/gles2_cmd_validation.h"
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 void RestoreAllAttributes() const override; 564 void RestoreAllAttributes() const override;
564 565
565 QueryManager* GetQueryManager() override { return query_manager_.get(); } 566 QueryManager* GetQueryManager() override { return query_manager_.get(); }
566 TransformFeedbackManager* GetTransformFeedbackManager() override { 567 TransformFeedbackManager* GetTransformFeedbackManager() override {
567 return transform_feedback_manager_.get(); 568 return transform_feedback_manager_.get();
568 } 569 }
569 VertexArrayManager* GetVertexArrayManager() override { 570 VertexArrayManager* GetVertexArrayManager() override {
570 return vertex_array_manager_.get(); 571 return vertex_array_manager_.get();
571 } 572 }
572 ImageManager* GetImageManager() override { return image_manager_.get(); } 573 ImageManager* GetImageManager() override { return image_manager_.get(); }
574 FenceManager* GetFenceManager() override { return fence_manager_.get(); }
573 575
574 bool HasPendingQueries() const override; 576 bool HasPendingQueries() const override;
575 void ProcessPendingQueries(bool did_finish) override; 577 void ProcessPendingQueries(bool did_finish) override;
576 578
577 bool HasMoreIdleWork() const override; 579 bool HasMoreIdleWork() const override;
578 void PerformIdleWork() override; 580 void PerformIdleWork() override;
579 581
580 bool HasPollingWork() const override; 582 bool HasPollingWork() const override;
581 void PerformPollingWork() override; 583 void PerformPollingWork() override;
582 584
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 TextureManager* texture_manager() { 749 TextureManager* texture_manager() {
748 return group_->texture_manager(); 750 return group_->texture_manager();
749 } 751 }
750 752
751 MailboxManager* mailbox_manager() { 753 MailboxManager* mailbox_manager() {
752 return group_->mailbox_manager(); 754 return group_->mailbox_manager();
753 } 755 }
754 756
755 ImageManager* image_manager() { return image_manager_.get(); } 757 ImageManager* image_manager() { return image_manager_.get(); }
756 758
759 FenceManager* fence_manager() { return fence_manager_.get(); }
760
757 VertexArrayManager* vertex_array_manager() { 761 VertexArrayManager* vertex_array_manager() {
758 return vertex_array_manager_.get(); 762 return vertex_array_manager_.get();
759 } 763 }
760 764
761 MemoryTracker* memory_tracker() { 765 MemoryTracker* memory_tracker() {
762 return group_->memory_tracker(); 766 return group_->memory_tracker();
763 } 767 }
764 768
765 const gl::GLVersionInfo& gl_version_info() { 769 const gl::GLVersionInfo& gl_version_info() {
766 return feature_info_->gl_version_info(); 770 return feature_info_->gl_version_info();
(...skipping 1459 matching lines...) Expand 10 before | Expand all | Expand 10 after
2226 2230
2227 // Whether the client requested an offscreen buffer with an alpha channel. 2231 // Whether the client requested an offscreen buffer with an alpha channel.
2228 bool offscreen_buffer_should_have_alpha_; 2232 bool offscreen_buffer_should_have_alpha_;
2229 2233
2230 std::unique_ptr<QueryManager> query_manager_; 2234 std::unique_ptr<QueryManager> query_manager_;
2231 2235
2232 std::unique_ptr<VertexArrayManager> vertex_array_manager_; 2236 std::unique_ptr<VertexArrayManager> vertex_array_manager_;
2233 2237
2234 std::unique_ptr<ImageManager> image_manager_; 2238 std::unique_ptr<ImageManager> image_manager_;
2235 2239
2240 std::unique_ptr<FenceManager> fence_manager_;
2241
2236 FenceSyncReleaseCallback fence_sync_release_callback_; 2242 FenceSyncReleaseCallback fence_sync_release_callback_;
2237 WaitFenceSyncCallback wait_fence_sync_callback_; 2243 WaitFenceSyncCallback wait_fence_sync_callback_;
2238 NoParamCallback deschedule_until_finished_callback_; 2244 NoParamCallback deschedule_until_finished_callback_;
2239 NoParamCallback reschedule_after_finished_callback_; 2245 NoParamCallback reschedule_after_finished_callback_;
2240 2246
2241 ShaderCacheCallback shader_cache_callback_; 2247 ShaderCacheCallback shader_cache_callback_;
2242 2248
2243 // The format of the back buffer_ 2249 // The format of the back buffer_
2244 GLenum back_buffer_color_format_; 2250 GLenum back_buffer_color_format_;
2245 bool back_buffer_has_depth_; 2251 bool back_buffer_has_depth_;
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after
3132 group_->max_vertex_attribs(), 3138 group_->max_vertex_attribs(),
3133 workarounds().init_vertex_attributes); 3139 workarounds().init_vertex_attributes);
3134 3140
3135 // vertex_attrib_manager is set to default_vertex_attrib_manager by this call 3141 // vertex_attrib_manager is set to default_vertex_attrib_manager by this call
3136 DoBindVertexArrayOES(0); 3142 DoBindVertexArrayOES(0);
3137 3143
3138 query_manager_.reset(new QueryManager(this, feature_info_.get())); 3144 query_manager_.reset(new QueryManager(this, feature_info_.get()));
3139 3145
3140 image_manager_.reset(new ImageManager); 3146 image_manager_.reset(new ImageManager);
3141 3147
3148 fence_manager_.reset(new FenceManager);
3149
3142 util_.set_num_compressed_texture_formats( 3150 util_.set_num_compressed_texture_formats(
3143 validators_->compressed_texture_format.GetValues().size()); 3151 validators_->compressed_texture_format.GetValues().size());
3144 3152
3145 if (!gl_version_info().BehavesLikeGLES()) { 3153 if (!gl_version_info().BehavesLikeGLES()) {
3146 // We have to enable vertex array 0 on GL with compatibility profile or it 3154 // We have to enable vertex array 0 on GL with compatibility profile or it
3147 // won't render. Note that ES or GL with core profile does not have this 3155 // won't render. Note that ES or GL with core profile does not have this
3148 // issue. 3156 // issue.
3149 glEnableVertexAttribArray(0); 3157 glEnableVertexAttribArray(0);
3150 } 3158 }
3151 glGenBuffersARB(1, &attrib_0_buffer_id_); 3159 glGenBuffersARB(1, &attrib_0_buffer_id_);
(...skipping 1601 matching lines...) Expand 10 before | Expand all | Expand 10 after
4753 if (transform_feedback_manager_.get()) { 4761 if (transform_feedback_manager_.get()) {
4754 if (!have_context) { 4762 if (!have_context) {
4755 transform_feedback_manager_->MarkContextLost(); 4763 transform_feedback_manager_->MarkContextLost();
4756 } 4764 }
4757 transform_feedback_manager_->Destroy(); 4765 transform_feedback_manager_->Destroy();
4758 transform_feedback_manager_.reset(); 4766 transform_feedback_manager_.reset();
4759 } 4767 }
4760 4768
4761 image_manager_.reset(); 4769 image_manager_.reset();
4762 4770
4771 if (fence_manager_.get()) {
4772 fence_manager_->Destroy(have_context);
4773 fence_manager_.reset();
4774 }
4775
4763 offscreen_target_frame_buffer_.reset(); 4776 offscreen_target_frame_buffer_.reset();
4764 offscreen_target_color_texture_.reset(); 4777 offscreen_target_color_texture_.reset();
4765 offscreen_target_color_render_buffer_.reset(); 4778 offscreen_target_color_render_buffer_.reset();
4766 offscreen_target_depth_render_buffer_.reset(); 4779 offscreen_target_depth_render_buffer_.reset();
4767 offscreen_target_stencil_render_buffer_.reset(); 4780 offscreen_target_stencil_render_buffer_.reset();
4768 offscreen_saved_frame_buffer_.reset(); 4781 offscreen_saved_frame_buffer_.reset();
4769 offscreen_saved_color_texture_.reset(); 4782 offscreen_saved_color_texture_.reset();
4770 offscreen_resolved_frame_buffer_.reset(); 4783 offscreen_resolved_frame_buffer_.reset();
4771 offscreen_resolved_color_texture_.reset(); 4784 offscreen_resolved_color_texture_.reset();
4772 4785
(...skipping 14072 matching lines...) Expand 10 before | Expand all | Expand 10 after
18845 } 18858 }
18846 18859
18847 // Include the auto-generated part of this file. We split this because it means 18860 // Include the auto-generated part of this file. We split this because it means
18848 // we can easily edit the non-auto generated parts right here in this file 18861 // we can easily edit the non-auto generated parts right here in this file
18849 // instead of having to edit some template or the code generator. 18862 // instead of having to edit some template or the code generator.
18850 #include "base/macros.h" 18863 #include "base/macros.h"
18851 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 18864 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
18852 18865
18853 } // namespace gles2 18866 } // namespace gles2
18854 } // namespace gpu 18867 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698