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

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: 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
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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 // possible for us to use a shadered descriptor pool to allocate all these s imilar descriptor 105 // possible for us to use a shadered descriptor pool to allocate all these s imilar descriptor
106 // sets. The caller is responsible for reffing the outPool for as long as th e returned 106 // sets. The caller is responsible for reffing the outPool for as long as th e returned
107 // VkDescriptor set is in use. 107 // VkDescriptor set is in use.
108 void getUniformDescriptorSet(VkDescriptorSet*, const GrVkDescriptorPool** ou tPool); 108 void getUniformDescriptorSet(VkDescriptorSet*, const GrVkDescriptorPool** ou tPool);
109 109
110 // Returns the compatible VkDescriptorSetLayout to use for uniform buffers. The caller does not 110 // Returns the compatible VkDescriptorSetLayout to use for uniform buffers. The caller does not
111 // own the VkDescriptorSetLayout and thus should not delete it. This functio n should be used 111 // own the VkDescriptorSetLayout and thus should not delete it. This functio n should be used
112 // when the caller needs the layout to create a VkPipelineLayout. 112 // when the caller needs the layout to create a VkPipelineLayout.
113 VkDescriptorSetLayout getUniDSLayout() const { return fUniformDescLayout; } 113 VkDescriptorSetLayout getUniDSLayout() const { return fUniformDescLayout; }
114 114
115 // Creates or finds uniform buffer resources of size GrVkUniformBuffer::kSta ndardSize
116 // Anything larger will need to be created and released by the client
117 const GrVkResource* findOrCreateStandardUniformBufferResource();
118 void recycleStandardUniformBufferResource(const GrVkResource*);
egdaniel 2016/07/19 20:48:38 comment for recycle function
119
115 // Destroy any cached resources. To be called before destroying the VkDevice . 120 // Destroy any cached resources. To be called before destroying the VkDevice .
116 // The assumption is that all queues are idle and all command buffers are fi nished. 121 // The assumption is that all queues are idle and all command buffers are fi nished.
117 // For resource tracing to work properly, this should be called after unrefi ng all other 122 // For resource tracing to work properly, this should be called after unrefi ng all other
118 // resource usages. 123 // resource usages.
119 void destroyResources(); 124 void destroyResources();
120 125
121 // Abandon any cached resources. To be used when the context/VkDevice is los t. 126 // Abandon any cached resources. To be used when the context/VkDevice is los t.
122 // For resource tracing to work properly, this should be called after unrefi ng all other 127 // For resource tracing to work properly, this should be called after unrefi ng all other
123 // resource usages. 128 // resource usages.
124 void abandonResources(); 129 void abandonResources();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 SkSTArray<4, CompatibleRenderPassSet> fRenderPassArray; 209 SkSTArray<4, CompatibleRenderPassSet> fRenderPassArray;
205 210
206 // Array of PrimaryCommandBuffers that are currently in flight 211 // Array of PrimaryCommandBuffers that are currently in flight
207 SkSTArray<4, GrVkPrimaryCommandBuffer*> fActiveCommandBuffers; 212 SkSTArray<4, GrVkPrimaryCommandBuffer*> fActiveCommandBuffers;
208 // Array of available primary command buffers that are not in flight 213 // Array of available primary command buffers that are not in flight
209 SkSTArray<4, GrVkPrimaryCommandBuffer*> fAvailableCommandBuffers; 214 SkSTArray<4, GrVkPrimaryCommandBuffer*> fAvailableCommandBuffers;
210 215
211 // Array of available secondary command buffers 216 // Array of available secondary command buffers
212 SkSTArray<16, GrVkSecondaryCommandBuffer*> fAvailableSecondaryCommandBuffers ; 217 SkSTArray<16, GrVkSecondaryCommandBuffer*> fAvailableSecondaryCommandBuffers ;
213 218
219 // Array of available uniform buffer resources
220 SkSTArray<16, const GrVkResource*> fAvailableUniformBufferResources;
221
214 // Stores GrVkSampler objects that we've already created so we can reuse the m across multiple 222 // Stores GrVkSampler objects that we've already created so we can reuse the m across multiple
215 // GrVkPipelineStates 223 // GrVkPipelineStates
216 SkTDynamicHash<GrVkSampler, uint16_t> fSamplers; 224 SkTDynamicHash<GrVkSampler, uint16_t> fSamplers;
217 225
218 // Cache of GrVkPipelineStates 226 // Cache of GrVkPipelineStates
219 PipelineStateCache* fPipelineStateCache; 227 PipelineStateCache* fPipelineStateCache;
220 228
221 // Current pool to allocate uniform descriptor sets from 229 // Current pool to allocate uniform descriptor sets from
222 const GrVkDescriptorPool* fUniformDescPool; 230 const GrVkDescriptorPool* fUniformDescPool;
223 VkDescriptorSetLayout fUniformDescLayout; 231 VkDescriptorSetLayout fUniformDescLayout;
224 //Curent number of uniform descriptors allocated from the pool 232 //Curent number of uniform descriptors allocated from the pool
225 int fCurrentUniformDescCount; 233 int fCurrentUniformDescCount;
226 int fCurrMaxUniDescriptors; 234 int fCurrMaxUniDescriptors;
227 235
228 enum { 236 enum {
229 kMaxUniformDescriptors = 1024, 237 kMaxUniformDescriptors = 1024,
230 kNumUniformDescPerSet = 2, 238 kNumUniformDescPerSet = 2,
231 kStartNumUniformDescriptors = 16, // must be less than kMaxUniformDescri ptors 239 kStartNumUniformDescriptors = 16, // must be less than kMaxUniformDescri ptors
232 }; 240 };
233 }; 241 };
234 242
235 #endif 243 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698