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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_passthrough.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) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_decoder_passthrough.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
6 6
7 #include "gpu/command_buffer/service/feature_info.h" 7 #include "gpu/command_buffer/service/feature_info.h"
8 #include "gpu/command_buffer/service/gl_utils.h" 8 #include "gpu/command_buffer/service/gl_utils.h"
9 #include "ui/gl/gl_version_info.h" 9 #include "ui/gl/gl_version_info.h"
10 10
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 if (!feature_info_->feature_flags().angle_robust_client_memory || 161 if (!feature_info_->feature_flags().angle_robust_client_memory ||
162 !feature_info_->feature_flags().chromium_bind_generates_resource || 162 !feature_info_->feature_flags().chromium_bind_generates_resource ||
163 (feature_info_->IsWebGLContext() != 163 (feature_info_->IsWebGLContext() !=
164 feature_info_->feature_flags().angle_webgl_compatibility)) { 164 feature_info_->feature_flags().angle_webgl_compatibility)) {
165 Destroy(true); 165 Destroy(true);
166 return false; 166 return false;
167 } 167 }
168 168
169 image_manager_.reset(new ImageManager()); 169 image_manager_.reset(new ImageManager());
170 170
171 fence_manager_.reset(new FenceManager());
172
171 bind_generates_resource_ = group_->bind_generates_resource(); 173 bind_generates_resource_ = group_->bind_generates_resource();
172 174
173 resources_ = group_->passthrough_resources(); 175 resources_ = group_->passthrough_resources();
174 176
175 mailbox_manager_ = group_->mailbox_manager(); 177 mailbox_manager_ = group_->mailbox_manager();
176 178
177 // Query information about the texture units 179 // Query information about the texture units
178 GLint num_texture_units = 0; 180 GLint num_texture_units = 0;
179 glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &num_texture_units); 181 glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &num_texture_units);
180 182
181 active_texture_unit_ = 0; 183 active_texture_unit_ = 0;
182 bound_textures_.resize(num_texture_units, 0); 184 bound_textures_.resize(num_texture_units, 0);
183 185
184 if (group_->gpu_preferences().enable_gpu_driver_debug_logging && 186 if (group_->gpu_preferences().enable_gpu_driver_debug_logging &&
185 feature_info_->feature_flags().khr_debug) { 187 feature_info_->feature_flags().khr_debug) {
186 InitializeGLDebugLogging(); 188 InitializeGLDebugLogging();
187 } 189 }
188 190
189 set_initialized(); 191 set_initialized();
190 return true; 192 return true;
191 } 193 }
192 194
193 void GLES2DecoderPassthroughImpl::Destroy(bool have_context) { 195 void GLES2DecoderPassthroughImpl::Destroy(bool have_context) {
194 image_manager_.reset(); 196 image_manager_.reset();
195 197
198 if (fence_manager_.get()) {
199 fence_manager_->Destroy(have_context);
200 fence_manager_.reset();
201 }
202
196 DeleteServiceObjects( 203 DeleteServiceObjects(
197 &framebuffer_id_map_, have_context, 204 &framebuffer_id_map_, have_context,
198 [](GLuint framebuffer) { glDeleteFramebuffersEXT(1, &framebuffer); }); 205 [](GLuint framebuffer) { glDeleteFramebuffersEXT(1, &framebuffer); });
199 DeleteServiceObjects(&transform_feedback_id_map_, have_context, 206 DeleteServiceObjects(&transform_feedback_id_map_, have_context,
200 [](GLuint transform_feedback) { 207 [](GLuint transform_feedback) {
201 glDeleteTransformFeedbacks(1, &transform_feedback); 208 glDeleteTransformFeedbacks(1, &transform_feedback);
202 }); 209 });
203 DeleteServiceObjects(&query_id_map_, have_context, 210 DeleteServiceObjects(&query_id_map_, have_context,
204 [](GLuint query) { glDeleteQueries(1, &query); }); 211 [](GLuint query) { glDeleteQueries(1, &query); });
205 DeleteServiceObjects( 212 DeleteServiceObjects(
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 418
412 gpu::gles2::VertexArrayManager* 419 gpu::gles2::VertexArrayManager*
413 GLES2DecoderPassthroughImpl::GetVertexArrayManager() { 420 GLES2DecoderPassthroughImpl::GetVertexArrayManager() {
414 return nullptr; 421 return nullptr;
415 } 422 }
416 423
417 gpu::gles2::ImageManager* GLES2DecoderPassthroughImpl::GetImageManager() { 424 gpu::gles2::ImageManager* GLES2DecoderPassthroughImpl::GetImageManager() {
418 return image_manager_.get(); 425 return image_manager_.get();
419 } 426 }
420 427
428 gpu::gles2::FenceManager* GLES2DecoderPassthroughImpl::GetFenceManager() {
429 return fence_manager_.get();
430 }
431
421 bool GLES2DecoderPassthroughImpl::HasPendingQueries() const { 432 bool GLES2DecoderPassthroughImpl::HasPendingQueries() const {
422 return false; 433 return false;
423 } 434 }
424 435
425 void GLES2DecoderPassthroughImpl::ProcessPendingQueries(bool did_finish) {} 436 void GLES2DecoderPassthroughImpl::ProcessPendingQueries(bool did_finish) {}
426 437
427 bool GLES2DecoderPassthroughImpl::HasMoreIdleWork() const { 438 bool GLES2DecoderPassthroughImpl::HasMoreIdleWork() const {
428 return false; 439 return false;
429 } 440 }
430 441
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 }, /* NOLINT */ 550 }, /* NOLINT */
540 551
541 const GLES2DecoderPassthroughImpl::CommandInfo 552 const GLES2DecoderPassthroughImpl::CommandInfo
542 GLES2DecoderPassthroughImpl::command_info[] = { 553 GLES2DecoderPassthroughImpl::command_info[] = {
543 GLES2_COMMAND_LIST(GLES2_CMD_OP)}; 554 GLES2_COMMAND_LIST(GLES2_CMD_OP)};
544 555
545 #undef GLES2_CMD_OP 556 #undef GLES2_CMD_OP
546 557
547 } // namespace gles2 558 } // namespace gles2
548 } // namespace gpu 559 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698