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

Side by Side Diff: gpu/command_buffer/client/buffer_tracker.h

Issue 116863003: gpu: Reuse transfer buffers more aggresively (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: [RFC] gpu: Reuse transfer buffers more aggressively Created 6 years, 11 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 #ifndef GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_ 5 #ifndef GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_
6 #define GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_ 6 #define GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_
7 7
8 #include <GLES2/gl2.h> 8 #include <GLES2/gl2.h>
9 9
10 #include <queue> 10 #include <queue>
(...skipping 17 matching lines...) Expand all
28 unsigned int size, 28 unsigned int size,
29 int32 shm_id, 29 int32 shm_id,
30 uint32 shm_offset, 30 uint32 shm_offset,
31 void* address) 31 void* address)
32 : id_(id), 32 : id_(id),
33 size_(size), 33 size_(size),
34 shm_id_(shm_id), 34 shm_id_(shm_id),
35 shm_offset_(shm_offset), 35 shm_offset_(shm_offset),
36 address_(address), 36 address_(address),
37 mapped_(false), 37 mapped_(false),
38 transfer_ready_token_(0) { 38 transfer_ready_token_(0),
39 unused_token_(0),
40 async_query_id_(0) {
39 } 41 }
40 42
41 GLenum id() const { 43 GLenum id() const {
42 return id_; 44 return id_;
43 } 45 }
44 46
45 unsigned int size() const { 47 unsigned int size() const {
46 return size_; 48 return size_;
47 } 49 }
48 50
(...skipping 18 matching lines...) Expand all
67 } 69 }
68 70
69 void set_transfer_ready_token(int token) { 71 void set_transfer_ready_token(int token) {
70 transfer_ready_token_ = token; 72 transfer_ready_token_ = token;
71 } 73 }
72 74
73 uint32 transfer_ready_token() const { 75 uint32 transfer_ready_token() const {
74 return transfer_ready_token_; 76 return transfer_ready_token_;
75 } 77 }
76 78
79 void set_used(bool used) {
80 used_ = used;
81 }
82
83 bool used() const {
84 return used_;
85 }
86
87 void set_unused_token(int token) {
88 unused_token_ = token;
89 }
90
91 int unused_token() const {
92 return unused_token_;
93 }
94
95 void set_async_query_id(GLuint async_query_id) {
96 async_query_id_ = async_query_id;
97 }
98
99 GLuint async_query_id() const {
100 return async_query_id_;
101 }
102
77 private: 103 private:
78 friend class BufferTracker; 104 friend class BufferTracker;
79 friend class BufferTrackerTest; 105 friend class BufferTrackerTest;
80 106
81 GLuint id_; 107 GLuint id_;
82 unsigned int size_; 108 unsigned int size_;
83 int32 shm_id_; 109 int32 shm_id_;
84 uint32 shm_offset_; 110 uint32 shm_offset_;
85 void* address_; 111 void* address_;
86 bool mapped_; 112 bool mapped_ : 1;
113 bool used_ : 1;
87 int32 transfer_ready_token_; 114 int32 transfer_ready_token_;
115 int32 unused_token_;
epennerAtGoogle 2014/01/07 00:47:59 Does this mean: "The buffer is unused after this t
reveman 2014/01/07 06:32:06 +1
jadahl 2014/01/07 10:52:03 last_usage_token np. last_async_query_id might be
116 GLuint async_query_id_;
88 }; 117 };
89 118
90 BufferTracker(MappedMemoryManager* manager); 119 BufferTracker(MappedMemoryManager* manager);
91 ~BufferTracker(); 120 ~BufferTracker();
92 121
93 Buffer* CreateBuffer(GLuint id, GLsizeiptr size); 122 Buffer* CreateBuffer(GLuint id, GLsizeiptr size);
94 Buffer* GetBuffer(GLuint id); 123 Buffer* GetBuffer(GLuint id);
95 void RemoveBuffer(GLuint id); 124 void RemoveBuffer(GLuint id);
125 void UnmanageBuffer(GLuint id);
96 126
97 // Frees the block of memory associated with buffer, pending the passage 127 // Frees the block of memory associated with buffer, pending the passage
98 // of a token. 128 // of a token.
99 void FreePendingToken(Buffer*, int32 token); 129 void FreePendingToken(Buffer* buffer, int32 token);
130 void Free(Buffer* buffer);
100 131
101 private: 132 private:
102 typedef base::hash_map<GLuint, Buffer*> BufferMap; 133 typedef base::hash_map<GLuint, Buffer*> BufferMap;
103 134
104 MappedMemoryManager* mapped_memory_; 135 MappedMemoryManager* mapped_memory_;
105 BufferMap buffers_; 136 BufferMap buffers_;
106 137
107 DISALLOW_COPY_AND_ASSIGN(BufferTracker); 138 DISALLOW_COPY_AND_ASSIGN(BufferTracker);
108 }; 139 };
109 140
110 } // namespace gles2 141 } // namespace gles2
111 } // namespace gpu 142 } // namespace gpu
112 143
113 #endif // GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_ 144 #endif // GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698