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

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

Issue 1922633002: Implement TransformFeedbackManager in GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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/buffer_manager.h" 5 #include "gpu/command_buffer/service/buffer_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
14 #include "base/trace_event/memory_dump_manager.h" 14 #include "base/trace_event/memory_dump_manager.h"
15 #include "base/trace_event/trace_event.h" 15 #include "base/trace_event/trace_event.h"
16 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 16 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
17 #include "gpu/command_buffer/service/context_state.h" 17 #include "gpu/command_buffer/service/context_state.h"
18 #include "gpu/command_buffer/service/error_state.h" 18 #include "gpu/command_buffer/service/error_state.h"
19 #include "gpu/command_buffer/service/feature_info.h" 19 #include "gpu/command_buffer/service/feature_info.h"
20 #include "gpu/command_buffer/service/memory_tracking.h" 20 #include "gpu/command_buffer/service/memory_tracking.h"
21 #include "gpu/command_buffer/service/transform_feedback_manager.h"
21 #include "ui/gl/gl_bindings.h" 22 #include "ui/gl/gl_bindings.h"
22 #include "ui/gl/gl_implementation.h" 23 #include "ui/gl/gl_implementation.h"
24 #include "ui/gl/gl_version_info.h"
23 #include "ui/gl/trace_util.h" 25 #include "ui/gl/trace_util.h"
24 26
25 namespace gpu { 27 namespace gpu {
26 namespace gles2 { 28 namespace gles2 {
27 29
28 BufferManager::BufferManager(MemoryTracker* memory_tracker, 30 BufferManager::BufferManager(MemoryTracker* memory_tracker,
29 FeatureInfo* feature_info) 31 FeatureInfo* feature_info)
30 : memory_type_tracker_( 32 : memory_type_tracker_(
31 new MemoryTypeTracker(memory_tracker)), 33 new MemoryTypeTracker(memory_tracker)),
32 memory_tracker_(memory_tracker), 34 memory_tracker_(memory_tracker),
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 return; 404 return;
403 } 405 }
404 406
405 if (!memory_type_tracker_->EnsureGPUMemoryAvailable(size)) { 407 if (!memory_type_tracker_->EnsureGPUMemoryAvailable(size)) {
406 ERRORSTATE_SET_GL_ERROR( 408 ERRORSTATE_SET_GL_ERROR(
407 error_state, GL_OUT_OF_MEMORY, "glBufferData", "out of memory"); 409 error_state, GL_OUT_OF_MEMORY, "glBufferData", "out of memory");
408 return; 410 return;
409 } 411 }
410 412
411 DoBufferData(error_state, buffer, target, size, usage, data); 413 DoBufferData(error_state, buffer, target, size, usage, data);
414
415 if (context_state->bound_transform_feedback.get()) {
416 // buffer size might have changed, and on Desktop GL lower than 4.2,
417 // we might need to reset transform feedback buffer range.
418 context_state->bound_transform_feedback->OnBufferData(
419 feature_info_->gl_version_info(), target, buffer);
420 }
412 } 421 }
413 422
414 423
415 void BufferManager::DoBufferData( 424 void BufferManager::DoBufferData(
416 ErrorState* error_state, 425 ErrorState* error_state,
417 Buffer* buffer, 426 Buffer* buffer,
418 GLenum target, 427 GLenum target,
419 GLsizeiptr size, 428 GLsizeiptr size,
420 GLenum usage, 429 GLenum usage,
421 const GLvoid* data) { 430 const GLvoid* data) {
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 auto guid = gfx::GetGLBufferGUIDForTracing( 652 auto guid = gfx::GetGLBufferGUIDForTracing(
644 memory_tracker_->ShareGroupTracingGUID(), client_buffer_id); 653 memory_tracker_->ShareGroupTracingGUID(), client_buffer_id);
645 pmd->CreateSharedGlobalAllocatorDump(guid); 654 pmd->CreateSharedGlobalAllocatorDump(guid);
646 pmd->AddOwnershipEdge(dump->guid(), guid); 655 pmd->AddOwnershipEdge(dump->guid(), guid);
647 } 656 }
648 return true; 657 return true;
649 } 658 }
650 659
651 } // namespace gles2 660 } // namespace gles2
652 } // namespace gpu 661 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698