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

Side by Side Diff: src/gpu/vk/GrVkResourceProvider.h

Issue 2159333002: Recycle small uniform buffers. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Update values Created 4 years, 5 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
« no previous file with comments | « src/gpu/vk/GrVkPipelineState.cpp ('k') | src/gpu/vk/GrVkResourceProvider.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrVkResourceProvider_DEFINED 8 #ifndef GrVkResourceProvider_DEFINED
9 #define GrVkResourceProvider_DEFINED 9 #define GrVkResourceProvider_DEFINED
10 10
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 // Returns the compatible VkDescriptorSetLayout to use for uniform buffers. The caller does not 121 // Returns the compatible VkDescriptorSetLayout to use for uniform buffers. The caller does not
122 // own the VkDescriptorSetLayout and thus should not delete it. This functio n should be used 122 // own the VkDescriptorSetLayout and thus should not delete it. This functio n should be used
123 // when the caller needs the layout to create a VkPipelineLayout. 123 // when the caller needs the layout to create a VkPipelineLayout.
124 VkDescriptorSetLayout getUniDSLayout() const { return fUniformDescLayout; } 124 VkDescriptorSetLayout getUniDSLayout() const { return fUniformDescLayout; }
125 125
126 // Signals that the descriptor set passed it, which is compatible with the p assed in handle, 126 // Signals that the descriptor set passed it, which is compatible with the p assed in handle,
127 // can be reused by the next allocation request. 127 // can be reused by the next allocation request.
128 void recycleDescriptorSet(const GrVkDescriptorSet* descSet, 128 void recycleDescriptorSet(const GrVkDescriptorSet* descSet,
129 const GrVkDescriptorSetManager::Handle&); 129 const GrVkDescriptorSetManager::Handle&);
130 130
131 // Creates or finds free uniform buffer resources of size GrVkUniformBuffer: :kStandardSize.
132 // Anything larger will need to be created and released by the client.
133 const GrVkResource* findOrCreateStandardUniformBufferResource();
134
135 // Signals that the resource passed to it (which should be a uniform buffer resource)
136 // can be reused by the next uniform buffer resource request.
137 void recycleStandardUniformBufferResource(const GrVkResource*);
138
131 // Destroy any cached resources. To be called before destroying the VkDevice . 139 // Destroy any cached resources. To be called before destroying the VkDevice .
132 // The assumption is that all queues are idle and all command buffers are fi nished. 140 // The assumption is that all queues are idle and all command buffers are fi nished.
133 // For resource tracing to work properly, this should be called after unrefi ng all other 141 // For resource tracing to work properly, this should be called after unrefi ng all other
134 // resource usages. 142 // resource usages.
135 void destroyResources(); 143 void destroyResources();
136 144
137 // Abandon any cached resources. To be used when the context/VkDevice is los t. 145 // Abandon any cached resources. To be used when the context/VkDevice is los t.
138 // For resource tracing to work properly, this should be called after unrefi ng all other 146 // For resource tracing to work properly, this should be called after unrefi ng all other
139 // resource usages. 147 // resource usages.
140 void abandonResources(); 148 void abandonResources();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 SkSTArray<4, CompatibleRenderPassSet> fRenderPassArray; 227 SkSTArray<4, CompatibleRenderPassSet> fRenderPassArray;
220 228
221 // Array of PrimaryCommandBuffers that are currently in flight 229 // Array of PrimaryCommandBuffers that are currently in flight
222 SkSTArray<4, GrVkPrimaryCommandBuffer*> fActiveCommandBuffers; 230 SkSTArray<4, GrVkPrimaryCommandBuffer*> fActiveCommandBuffers;
223 // Array of available primary command buffers that are not in flight 231 // Array of available primary command buffers that are not in flight
224 SkSTArray<4, GrVkPrimaryCommandBuffer*> fAvailableCommandBuffers; 232 SkSTArray<4, GrVkPrimaryCommandBuffer*> fAvailableCommandBuffers;
225 233
226 // Array of available secondary command buffers 234 // Array of available secondary command buffers
227 SkSTArray<16, GrVkSecondaryCommandBuffer*> fAvailableSecondaryCommandBuffers ; 235 SkSTArray<16, GrVkSecondaryCommandBuffer*> fAvailableSecondaryCommandBuffers ;
228 236
237 // Array of available uniform buffer resources
238 SkSTArray<16, const GrVkResource*> fAvailableUniformBufferResources;
239
229 // Stores GrVkSampler objects that we've already created so we can reuse the m across multiple 240 // Stores GrVkSampler objects that we've already created so we can reuse the m across multiple
230 // GrVkPipelineStates 241 // GrVkPipelineStates
231 SkTDynamicHash<GrVkSampler, uint16_t> fSamplers; 242 SkTDynamicHash<GrVkSampler, uint16_t> fSamplers;
232 243
233 // Cache of GrVkPipelineStates 244 // Cache of GrVkPipelineStates
234 PipelineStateCache* fPipelineStateCache; 245 PipelineStateCache* fPipelineStateCache;
235 246
236 SkSTArray<4, GrVkDescriptorSetManager> fDescriptorSetManagers; 247 SkSTArray<4, GrVkDescriptorSetManager> fDescriptorSetManagers;
237 248
238 GrVkDescriptorSetManager::Handle fUniformDSHandle; 249 GrVkDescriptorSetManager::Handle fUniformDSHandle;
239 250
240 // Current pool to allocate uniform descriptor sets from 251 // Current pool to allocate uniform descriptor sets from
241 VkDescriptorSetLayout fUniformDescLayout; 252 VkDescriptorSetLayout fUniformDescLayout;
242 //Curent number of uniform descriptors allocated from the pool 253 //Curent number of uniform descriptors allocated from the pool
243 int fCurrentUniformDescCount; 254 int fCurrentUniformDescCount;
244 int fCurrMaxUniDescriptors; 255 int fCurrMaxUniDescriptors;
245 256
246 enum { 257 enum {
247 kMaxUniformDescriptors = 1024, 258 kMaxUniformDescriptors = 1024,
248 kNumUniformDescPerSet = 2, 259 kNumUniformDescPerSet = 2,
249 kStartNumUniformDescriptors = 16, // must be less than kMaxUniformDescri ptors 260 kStartNumUniformDescriptors = 16, // must be less than kMaxUniformDescri ptors
250 }; 261 };
251 }; 262 };
252 263
253 #endif 264 #endif
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkPipelineState.cpp ('k') | src/gpu/vk/GrVkResourceProvider.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698