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

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: [WIP] Review comments follow-up 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 last_usage_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 10 matching lines...) Expand all
59 } 61 }
60 62
61 void set_mapped(bool mapped) { 63 void set_mapped(bool mapped) {
62 mapped_ = mapped; 64 mapped_ = mapped;
63 } 65 }
64 66
65 bool mapped() const { 67 bool mapped() const {
66 return mapped_; 68 return mapped_;
67 } 69 }
68 70
69 void set_transfer_ready_token(int token) { 71 void set_last_usage_token(int token) {
70 transfer_ready_token_ = token; 72 last_usage_token_ = token;
71 } 73 }
72 74
73 uint32 transfer_ready_token() const { 75 int last_usage_token() const {
74 return transfer_ready_token_; 76 return last_usage_token_;
77 }
78
79 void set_async_query_id(GLuint async_query_id) {
80 async_query_id_ = async_query_id;
81 }
82
83 GLuint async_query_id() const {
84 return async_query_id_;
75 } 85 }
76 86
77 private: 87 private:
78 friend class BufferTracker; 88 friend class BufferTracker;
79 friend class BufferTrackerTest; 89 friend class BufferTrackerTest;
80 90
81 GLuint id_; 91 GLuint id_;
82 unsigned int size_; 92 unsigned int size_;
83 int32 shm_id_; 93 int32 shm_id_;
84 uint32 shm_offset_; 94 uint32 shm_offset_;
85 void* address_; 95 void* address_;
86 bool mapped_; 96 bool mapped_ : 1;
97 bool used_ : 1;
piman 2014/01/16 21:22:50 nit: remove unused field.
87 int32 transfer_ready_token_; 98 int32 transfer_ready_token_;
99 int32 last_usage_token_;
100 GLuint async_query_id_;
88 }; 101 };
89 102
90 BufferTracker(MappedMemoryManager* manager); 103 BufferTracker(MappedMemoryManager* manager);
91 ~BufferTracker(); 104 ~BufferTracker();
92 105
93 Buffer* CreateBuffer(GLuint id, GLsizeiptr size); 106 Buffer* CreateBuffer(GLuint id, GLsizeiptr size);
94 Buffer* GetBuffer(GLuint id); 107 Buffer* GetBuffer(GLuint id);
95 void RemoveBuffer(GLuint id); 108 void RemoveBuffer(GLuint id);
96 109
97 // Frees the block of memory associated with buffer, pending the passage 110 // Frees the block of memory associated with buffer, pending the passage
98 // of a token. 111 // of a token.
99 void FreePendingToken(Buffer*, int32 token); 112 void FreePendingToken(Buffer* buffer, int32 token);
113 void FreePendingSerial(Buffer* buffer, uint32 serial);
114 void Free(Buffer* buffer);
100 115
101 private: 116 private:
102 typedef base::hash_map<GLuint, Buffer*> BufferMap; 117 typedef base::hash_map<GLuint, Buffer*> BufferMap;
103 118
104 MappedMemoryManager* mapped_memory_; 119 MappedMemoryManager* mapped_memory_;
105 BufferMap buffers_; 120 BufferMap buffers_;
106 121
107 DISALLOW_COPY_AND_ASSIGN(BufferTracker); 122 DISALLOW_COPY_AND_ASSIGN(BufferTracker);
108 }; 123 };
109 124
110 } // namespace gles2 125 } // namespace gles2
111 } // namespace gpu 126 } // namespace gpu
112 127
113 #endif // GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_ 128 #endif // GPU_COMMAND_BUFFER_CLIENT_BUFFER_TRACKER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698