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

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

Issue 2556623002: Implement GetIntegerv(SAMPLER_BINDING/TRANSFORM_FEEDBACK_BINDING) in command buffer. (Closed)
Patch Set: fix Created 4 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
« no previous file with comments | « gpu/command_buffer/service/transform_feedback_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/transform_feedback_manager.h" 5 #include "gpu/command_buffer/service/transform_feedback_manager.h"
6 6
7 #include "gpu/command_buffer/service/buffer_manager.h" 7 #include "gpu/command_buffer/service/buffer_manager.h"
8 #include "ui/gl/gl_version_info.h" 8 #include "ui/gl/gl_version_info.h"
9 9
10 namespace gpu { 10 namespace gpu {
11 namespace gles2 { 11 namespace gles2 {
12 12
13 TransformFeedback::TransformFeedback(TransformFeedbackManager* manager, 13 TransformFeedback::TransformFeedback(TransformFeedbackManager* manager,
14 GLuint client_id,
14 GLuint service_id) 15 GLuint service_id)
15 : IndexedBufferBindingHost( 16 : IndexedBufferBindingHost(
16 manager->max_transform_feedback_separate_attribs(), 17 manager->max_transform_feedback_separate_attribs(),
17 manager->needs_emulation()), 18 manager->needs_emulation()),
18 manager_(manager), 19 manager_(manager),
20 client_id_(client_id),
19 service_id_(service_id), 21 service_id_(service_id),
20 has_been_bound_(false), 22 has_been_bound_(false),
21 active_(false), 23 active_(false),
22 paused_(false), 24 paused_(false),
23 primitive_mode_(GL_NONE) { 25 primitive_mode_(GL_NONE) {
26 DCHECK_LE(0u, client_id);
24 DCHECK_LT(0u, service_id); 27 DCHECK_LT(0u, service_id);
25 } 28 }
26 29
27 TransformFeedback::~TransformFeedback() { 30 TransformFeedback::~TransformFeedback() {
28 if (!manager_->lost_context()) { 31 if (!manager_->lost_context()) {
29 if (active_) 32 if (active_)
30 glEndTransformFeedback(); 33 glEndTransformFeedback();
31 glDeleteTransformFeedbacks(1, &service_id_); 34 glDeleteTransformFeedbacks(1, &service_id_);
32 } 35 }
33 } 36 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 DCHECK(transform_feedbacks_.empty()); 91 DCHECK(transform_feedbacks_.empty());
89 } 92 }
90 93
91 void TransformFeedbackManager::Destroy() { 94 void TransformFeedbackManager::Destroy() {
92 transform_feedbacks_.clear(); 95 transform_feedbacks_.clear();
93 } 96 }
94 97
95 TransformFeedback* TransformFeedbackManager::CreateTransformFeedback( 98 TransformFeedback* TransformFeedbackManager::CreateTransformFeedback(
96 GLuint client_id, GLuint service_id) { 99 GLuint client_id, GLuint service_id) {
97 scoped_refptr<TransformFeedback> transform_feedback( 100 scoped_refptr<TransformFeedback> transform_feedback(
98 new TransformFeedback(this, service_id)); 101 new TransformFeedback(this, client_id, service_id));
99 auto result = transform_feedbacks_.insert( 102 auto result = transform_feedbacks_.insert(
100 std::make_pair(client_id, transform_feedback)); 103 std::make_pair(client_id, transform_feedback));
101 DCHECK(result.second); 104 DCHECK(result.second);
102 return result.first->second.get(); 105 return result.first->second.get();
103 } 106 }
104 107
105 TransformFeedback* TransformFeedbackManager::GetTransformFeedback( 108 TransformFeedback* TransformFeedbackManager::GetTransformFeedback(
106 GLuint client_id) { 109 GLuint client_id) {
107 if (client_id == 0) { 110 if (client_id == 0) {
108 return nullptr; 111 return nullptr;
109 } 112 }
110 auto it = transform_feedbacks_.find(client_id); 113 auto it = transform_feedbacks_.find(client_id);
111 return it != transform_feedbacks_.end() ? it->second.get() : nullptr; 114 return it != transform_feedbacks_.end() ? it->second.get() : nullptr;
112 } 115 }
113 116
114 void TransformFeedbackManager::RemoveTransformFeedback(GLuint client_id) { 117 void TransformFeedbackManager::RemoveTransformFeedback(GLuint client_id) {
115 if (client_id) { 118 if (client_id) {
116 transform_feedbacks_.erase(client_id); 119 transform_feedbacks_.erase(client_id);
117 } 120 }
118 } 121 }
119 122
120 } // namespace gles2 123 } // namespace gles2
121 } // namespace gpu 124 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/transform_feedback_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698