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

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

Issue 2172873003: Reuse sampler descriptor set allocations in Vulkan (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: nits Created 4 years, 4 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/GrVkDescriptorSetManager.cpp ('k') | src/gpu/vk/GrVkPipelineState.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 8
9 #ifndef GrVkPipelineState_DEFINED 9 #ifndef GrVkPipelineState_DEFINED
10 #define GrVkPipelineState_DEFINED 10 #define GrVkPipelineState_DEFINED
11 11
12 #include "GrStencilSettings.h" 12 #include "GrStencilSettings.h"
13 #include "GrVkDescriptorSetManager.h"
13 #include "GrVkImage.h" 14 #include "GrVkImage.h"
14 #include "GrVkProgramDesc.h" 15 #include "GrVkProgramDesc.h"
15 #include "GrVkPipelineStateDataManager.h" 16 #include "GrVkPipelineStateDataManager.h"
16 #include "glsl/GrGLSLProgramBuilder.h" 17 #include "glsl/GrGLSLProgramBuilder.h"
17 18
18 #include "vk/GrVkDefines.h" 19 #include "vk/GrVkDefines.h"
19 20
20 class GrPipeline; 21 class GrPipeline;
21 class GrVkCommandBuffer; 22 class GrVkCommandBuffer;
22 class GrVkDescriptorPool; 23 class GrVkDescriptorPool;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 const Desc& getDesc() { return fDesc; } 145 const Desc& getDesc() { return fDesc; }
145 146
146 private: 147 private:
147 typedef GrVkPipelineStateDataManager::UniformInfoArray UniformInfoArray; 148 typedef GrVkPipelineStateDataManager::UniformInfoArray UniformInfoArray;
148 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle; 149 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle;
149 150
150 GrVkPipelineState(GrVkGpu* gpu, 151 GrVkPipelineState(GrVkGpu* gpu,
151 const GrVkPipelineState::Desc&, 152 const GrVkPipelineState::Desc&,
152 GrVkPipeline* pipeline, 153 GrVkPipeline* pipeline,
153 VkPipelineLayout layout, 154 VkPipelineLayout layout,
154 VkDescriptorSetLayout dsSamplerLayout, 155 const GrVkDescriptorSetManager::Handle& samplerDSHandle,
155 const BuiltinUniformHandles& builtinUniformHandles, 156 const BuiltinUniformHandles& builtinUniformHandles,
156 const UniformInfoArray& uniforms, 157 const UniformInfoArray& uniforms,
157 uint32_t vertexUniformSize, 158 uint32_t vertexUniformSize,
158 uint32_t fragmentUniformSize, 159 uint32_t fragmentUniformSize,
159 uint32_t numSamplers, 160 uint32_t numSamplers,
160 GrGLSLPrimitiveProcessor* geometryProcessor, 161 GrGLSLPrimitiveProcessor* geometryProcessor,
161 GrGLSLXferProcessor* xferProcessor, 162 GrGLSLXferProcessor* xferProcessor,
162 const GrGLSLFragProcs& fragmentProcessors); 163 const GrGLSLFragProcs& fragmentProcessors);
163 164
164 // Each pool will manage one type of descriptor. Thus each descriptor set we use will all be of 165 // Each pool will manage one type of descriptor. Thus each descriptor set we use will all be of
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 // The DescriptorSets need to survive until the gpu has finished all draws t hat use them. 254 // The DescriptorSets need to survive until the gpu has finished all draws t hat use them.
254 // However, they will only be freed by the descriptor pool. Thus by simply k eeping the 255 // However, they will only be freed by the descriptor pool. Thus by simply k eeping the
255 // descriptor pool alive through the draw, the descritor sets will also stay alive. Thus we do 256 // descriptor pool alive through the draw, the descritor sets will also stay alive. Thus we do
256 // not need a GrVkResource versions of VkDescriptorSet. We hold on to these in the 257 // not need a GrVkResource versions of VkDescriptorSet. We hold on to these in the
257 // GrVkPipelineState since we update the descriptor sets and bind them at se parate times; 258 // GrVkPipelineState since we update the descriptor sets and bind them at se parate times;
258 VkDescriptorSet fDescriptorSets[2]; 259 VkDescriptorSet fDescriptorSets[2];
259 260
260 // Once we move samplers over to use the resource provider for descriptor se ts we will not need 261 // Once we move samplers over to use the resource provider for descriptor se ts we will not need
261 // the above array and instead just use GrVkDescriptorSet like the uniform o ne here. 262 // the above array and instead just use GrVkDescriptorSet like the uniform o ne here.
262 const GrVkDescriptorSet* fUniformDescriptorSet; 263 const GrVkDescriptorSet* fUniformDescriptorSet;
264 const GrVkDescriptorSet* fSamplerDescriptorSet;
265
266 const GrVkDescriptorSetManager::Handle fSamplerDSHandle;
263 267
264 // Meta data so we know which descriptor sets we are using and need to bind. 268 // Meta data so we know which descriptor sets we are using and need to bind.
265 int fStartDS; 269 int fStartDS;
266 int fDSCount; 270 int fDSCount;
267 271
268 SkAutoTDelete<GrVkUniformBuffer> fVertexUniformBuffer; 272 SkAutoTDelete<GrVkUniformBuffer> fVertexUniformBuffer;
269 SkAutoTDelete<GrVkUniformBuffer> fFragmentUniformBuffer; 273 SkAutoTDelete<GrVkUniformBuffer> fFragmentUniformBuffer;
270 274
271 // GrVkResources used for sampling textures 275 // GrVkResources used for sampling textures
272 SkTDArray<GrVkSampler*> fSamplers; 276 SkTDArray<GrVkSampler*> fSamplers;
273 SkTDArray<const GrVkImageView*> fTextureViews; 277 SkTDArray<const GrVkImageView*> fTextureViews;
274 SkTDArray<const GrVkResource*> fTextures; 278 SkTDArray<const GrVkResource*> fTextures;
275 279
276 // Tracks the current render target uniforms stored in the vertex buffer. 280 // Tracks the current render target uniforms stored in the vertex buffer.
277 RenderTargetState fRenderTargetState; 281 RenderTargetState fRenderTargetState;
278 BuiltinUniformHandles fBuiltinUniformHandles; 282 BuiltinUniformHandles fBuiltinUniformHandles;
279 283
280 // Processors in the GrVkPipelineState 284 // Processors in the GrVkPipelineState
281 SkAutoTDelete<GrGLSLPrimitiveProcessor> fGeometryProcessor; 285 SkAutoTDelete<GrGLSLPrimitiveProcessor> fGeometryProcessor;
282 SkAutoTDelete<GrGLSLXferProcessor> fXferProcessor; 286 SkAutoTDelete<GrGLSLXferProcessor> fXferProcessor;
283 GrGLSLFragProcs fFragmentProcessors; 287 GrGLSLFragProcs fFragmentProcessors;
284 288
285 Desc fDesc; 289 Desc fDesc;
286 290
287 GrVkPipelineStateDataManager fDataManager; 291 GrVkPipelineStateDataManager fDataManager;
288 292
289 DescriptorPoolManager fSamplerPoolManager;
290
291 int fNumSamplers; 293 int fNumSamplers;
292 294
293 friend class GrVkPipelineStateBuilder; 295 friend class GrVkPipelineStateBuilder;
294 }; 296 };
295 297
296 #endif 298 #endif
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkDescriptorSetManager.cpp ('k') | src/gpu/vk/GrVkPipelineState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698