OLD | NEW |
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 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 } | 870 } |
871 | 871 |
872 bool HasPendingQueries() const override; | 872 bool HasPendingQueries() const override; |
873 void ProcessPendingQueries(bool did_finish) override; | 873 void ProcessPendingQueries(bool did_finish) override; |
874 | 874 |
875 bool HasMoreIdleWork() const override; | 875 bool HasMoreIdleWork() const override; |
876 void PerformIdleWork() override; | 876 void PerformIdleWork() override; |
877 | 877 |
878 void WaitForReadPixels(base::Closure callback) override; | 878 void WaitForReadPixels(base::Closure callback) override; |
879 | 879 |
880 void SetResizeCallback( | |
881 const base::Callback<void(gfx::Size, float)>& callback) override; | |
882 | |
883 Logger* GetLogger() override; | 880 Logger* GetLogger() override; |
884 | 881 |
885 void BeginDecoding() override; | 882 void BeginDecoding() override; |
886 void EndDecoding() override; | 883 void EndDecoding() override; |
887 | 884 |
888 ErrorState* GetErrorState() override; | 885 ErrorState* GetErrorState() override; |
889 const ContextState* GetContextState() override { return &state_; } | 886 const ContextState* GetContextState() override { return &state_; } |
890 | 887 |
891 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; | 888 void SetShaderCacheCallback(const ShaderCacheCallback& callback) override; |
892 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override; | 889 void SetWaitSyncPointCallback(const WaitSyncPointCallback& callback) override; |
(...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2187 scoped_ptr<BackFramebuffer> offscreen_resolved_frame_buffer_; | 2184 scoped_ptr<BackFramebuffer> offscreen_resolved_frame_buffer_; |
2188 scoped_ptr<BackTexture> offscreen_resolved_color_texture_; | 2185 scoped_ptr<BackTexture> offscreen_resolved_color_texture_; |
2189 GLenum offscreen_saved_color_format_; | 2186 GLenum offscreen_saved_color_format_; |
2190 | 2187 |
2191 scoped_ptr<QueryManager> query_manager_; | 2188 scoped_ptr<QueryManager> query_manager_; |
2192 | 2189 |
2193 scoped_ptr<VertexArrayManager> vertex_array_manager_; | 2190 scoped_ptr<VertexArrayManager> vertex_array_manager_; |
2194 | 2191 |
2195 scoped_ptr<ImageManager> image_manager_; | 2192 scoped_ptr<ImageManager> image_manager_; |
2196 | 2193 |
2197 base::Callback<void(gfx::Size, float)> resize_callback_; | |
2198 | |
2199 WaitSyncPointCallback wait_sync_point_callback_; | 2194 WaitSyncPointCallback wait_sync_point_callback_; |
2200 FenceSyncReleaseCallback fence_sync_release_callback_; | 2195 FenceSyncReleaseCallback fence_sync_release_callback_; |
2201 WaitFenceSyncCallback wait_fence_sync_callback_; | 2196 WaitFenceSyncCallback wait_fence_sync_callback_; |
2202 | 2197 |
2203 ShaderCacheCallback shader_cache_callback_; | 2198 ShaderCacheCallback shader_cache_callback_; |
2204 | 2199 |
2205 // The format of the back buffer_ | 2200 // The format of the back buffer_ |
2206 GLenum back_buffer_color_format_; | 2201 GLenum back_buffer_color_format_; |
2207 bool back_buffer_has_depth_; | 2202 bool back_buffer_has_depth_; |
2208 bool back_buffer_has_stencil_; | 2203 bool back_buffer_has_stencil_; |
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4128 "UpdateParentTextureInfo", | 4123 "UpdateParentTextureInfo", |
4129 GetErrorState(), | 4124 GetErrorState(), |
4130 offscreen_saved_color_texture_info_.get(), | 4125 offscreen_saved_color_texture_info_.get(), |
4131 GL_TEXTURE_WRAP_T, | 4126 GL_TEXTURE_WRAP_T, |
4132 GL_CLAMP_TO_EDGE); | 4127 GL_CLAMP_TO_EDGE); |
4133 TextureRef* texture_ref = texture_manager()->GetTextureInfoForTarget( | 4128 TextureRef* texture_ref = texture_manager()->GetTextureInfoForTarget( |
4134 &state_, target); | 4129 &state_, target); |
4135 glBindTexture(target, texture_ref ? texture_ref->service_id() : 0); | 4130 glBindTexture(target, texture_ref ? texture_ref->service_id() : 0); |
4136 } | 4131 } |
4137 | 4132 |
4138 void GLES2DecoderImpl::SetResizeCallback( | |
4139 const base::Callback<void(gfx::Size, float)>& callback) { | |
4140 resize_callback_ = callback; | |
4141 } | |
4142 | |
4143 Logger* GLES2DecoderImpl::GetLogger() { | 4133 Logger* GLES2DecoderImpl::GetLogger() { |
4144 return &logger_; | 4134 return &logger_; |
4145 } | 4135 } |
4146 | 4136 |
4147 void GLES2DecoderImpl::BeginDecoding() { | 4137 void GLES2DecoderImpl::BeginDecoding() { |
4148 gpu_tracer_->BeginDecoding(); | 4138 gpu_tracer_->BeginDecoding(); |
4149 gpu_trace_commands_ = gpu_tracer_->IsTracing() && *gpu_decoder_category_; | 4139 gpu_trace_commands_ = gpu_tracer_->IsTracing() && *gpu_decoder_category_; |
4150 gpu_debug_commands_ = log_commands() || debug() || gpu_trace_commands_; | 4140 gpu_debug_commands_ = log_commands() || debug() || gpu_trace_commands_; |
4151 query_manager_->ProcessFrameBeginUpdates(); | 4141 query_manager_->ProcessFrameBeginUpdates(); |
4152 } | 4142 } |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4529 // Make sure that we are done drawing to the back buffer before resizing. | 4519 // Make sure that we are done drawing to the back buffer before resizing. |
4530 glFinish(); | 4520 glFinish(); |
4531 #endif | 4521 #endif |
4532 bool is_offscreen = !!offscreen_target_frame_buffer_.get(); | 4522 bool is_offscreen = !!offscreen_target_frame_buffer_.get(); |
4533 if (is_offscreen) { | 4523 if (is_offscreen) { |
4534 if (!ResizeOffscreenFrameBuffer(gfx::Size(width, height))) { | 4524 if (!ResizeOffscreenFrameBuffer(gfx::Size(width, height))) { |
4535 LOG(ERROR) << "GLES2DecoderImpl: Context lost because " | 4525 LOG(ERROR) << "GLES2DecoderImpl: Context lost because " |
4536 << "ResizeOffscreenFrameBuffer failed."; | 4526 << "ResizeOffscreenFrameBuffer failed."; |
4537 return error::kLostContext; | 4527 return error::kLostContext; |
4538 } | 4528 } |
4539 } | 4529 } else { |
4540 | 4530 if (!surface_->Resize(gfx::Size(width, height), scale_factor)) { |
4541 if (!resize_callback_.is_null()) { | 4531 LOG(ERROR) << "GLES2DecoderImpl: Context lost because resize failed."; |
4542 resize_callback_.Run(gfx::Size(width, height), scale_factor); | 4532 return error::kLostContext; |
| 4533 } |
4543 DCHECK(context_->IsCurrent(surface_.get())); | 4534 DCHECK(context_->IsCurrent(surface_.get())); |
4544 if (!context_->IsCurrent(surface_.get())) { | 4535 if (!context_->IsCurrent(surface_.get())) { |
4545 LOG(ERROR) << "GLES2DecoderImpl: Context lost because context no longer " | 4536 LOG(ERROR) << "GLES2DecoderImpl: Context lost because context no longer " |
4546 << "current after resize callback."; | 4537 << "current after resize callback."; |
4547 return error::kLostContext; | 4538 return error::kLostContext; |
4548 } | 4539 } |
4549 } | 4540 } |
4550 | 4541 |
4551 return error::kNoError; | 4542 return error::kNoError; |
4552 } | 4543 } |
(...skipping 10427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14980 return error::kNoError; | 14971 return error::kNoError; |
14981 } | 14972 } |
14982 | 14973 |
14983 // Include the auto-generated part of this file. We split this because it means | 14974 // Include the auto-generated part of this file. We split this because it means |
14984 // we can easily edit the non-auto generated parts right here in this file | 14975 // we can easily edit the non-auto generated parts right here in this file |
14985 // instead of having to edit some template or the code generator. | 14976 // instead of having to edit some template or the code generator. |
14986 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 14977 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
14987 | 14978 |
14988 } // namespace gles2 | 14979 } // namespace gles2 |
14989 } // namespace gpu | 14980 } // namespace gpu |
OLD | NEW |